{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "## 使用循环的方式计算每天的采购总额，结果为【37.2，37.6，36.8】"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 初始化两个列表，列表1代表蔬菜的单价，列表2代表购买的数量\n",
    "lis1 = ([1.2,1.5,1.8],\n",
    "        [1.3,1.4,1.9],\n",
    "        [1.1,1.6,1.7])\n",
    "lie2 = [5,10,9]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 使用矩阵点乘计算每天的采购总额（使用np.dot实现矩阵相乘）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Matplotlib is building the font cache; this may take a moment.\n"
     ]
    }
   ],
   "source": [
    "# 引入模块\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[1.2, 1.5, 1.8],\n",
       "       [1.3, 1.4, 1.9],\n",
       "       [1.1, 1.6, 1.7]])"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 初始化X,Y两个矩阵:矩阵X表示三种蔬菜的每日单价，行表示日期，列表示蔬菜品种：\n",
    "x = np.array([[1.2,1.5,1.8],\n",
    "                [1.3,1.4,1.9],\n",
    "                [1.1,1.6,1.7]])\n",
    "x"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 5, 10,  9])"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 矩阵y表示三种蔬菜的每日采购量，为后续的点乘，需要进行转置：为什么需要转置？？\n",
    "y = np.array([5,10,9]).T\n",
    "y"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([37.2, 37.6, 36.8])"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "array_daily_expenses = np.dot(x,y)\n",
    "array_daily_expenses"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 性能测试"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5.35 µs ± 241 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)\n"
     ]
    }
   ],
   "source": [
    "%%timeit\n",
    "array_daily_expenses = np.dot(x,y)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 作业二"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([6, 9, 6, 1, 1, 2, 8, 7, 3, 5, 6, 3, 5, 3, 5, 8, 8, 2, 8, 1, 7, 8,\n",
       "       7, 2, 1, 2, 9, 9, 4, 9])"
      ]
     },
     "execution_count": 97,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 阅读下面的代码\n",
    "np.random.seed(1)\n",
    "X = np.random.randint(1,10,size=30)\n",
    "X"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 98,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[6, 9, 6],\n",
       "       [1, 1, 2],\n",
       "       [8, 7, 3],\n",
       "       [5, 6, 3],\n",
       "       [5, 3, 5],\n",
       "       [8, 8, 2],\n",
       "       [8, 1, 7],\n",
       "       [8, 7, 2],\n",
       "       [1, 2, 9],\n",
       "       [9, 4, 9]])"
      ]
     },
     "execution_count": 98,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 将X处理为一个三列的矩阵：\n",
    "X = X.reshape(-1,3)\n",
    "X"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[6, 9, 1],\n",
       "       [1, 1, 0],\n",
       "       [8, 7, 0],\n",
       "       [5, 6, 0],\n",
       "       [5, 3, 1],\n",
       "       [8, 8, 0],\n",
       "       [8, 1, 2],\n",
       "       [8, 7, 0],\n",
       "       [1, 2, 2],\n",
       "       [9, 4, 2]])"
      ]
     },
     "execution_count": 99,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 将第三列中小于等于3的改为0；大于3且小于等于6的改为1.大于6的改为2：\n",
    "X[:,2][X[:,2]<=3] = 0\n",
    "X[:,2][(X[:,2]>3) & (X[:,2]<=6)] = 1\n",
    "X[:,2][X[:,2]>6] = 2\n",
    "X"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 103,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[6, 9],\n",
       "       [1, 1],\n",
       "       [8, 7],\n",
       "       [5, 6],\n",
       "       [5, 3],\n",
       "       [8, 8],\n",
       "       [8, 1],\n",
       "       [8, 7],\n",
       "       [1, 2],\n",
       "       [9, 4]])"
      ]
     },
     "execution_count": 103,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 数据分离\n",
    "# 先切出前两列数据赋值给X_train\n",
    "X_train = X[:,:2]\n",
    "X_train"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 104,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([1, 0, 0, 0, 1, 0, 2, 0, 2, 2])"
      ]
     },
     "execution_count": 104,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 再把最后一列切出，赋值给Y_train\n",
    "y_train = X[:,2]\n",
    "y_train"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 107,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[1, 1],\n",
       "       [8, 7],\n",
       "       [5, 6],\n",
       "       [8, 8],\n",
       "       [8, 7]])"
      ]
     },
     "execution_count": 107,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 分类为0的样本：从所有列中取y_train == 0的行\n",
    "X_train[y_train == 0,:]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 108,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[6, 9],\n",
       "       [5, 3]])"
      ]
     },
     "execution_count": 108,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 分类为1的样本;\n",
    "X_train[y_train == 1,:]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 109,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[8, 1],\n",
       "       [1, 2],\n",
       "       [9, 4]])"
      ]
     },
     "execution_count": 109,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 分类为2的样本：\n",
    "X_train[y_train == 2,:]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 作业3 服务器日志分析"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 153,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2019162542\\t/front-api/bill/create\\t8\\t1057.31...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>162644\\t/front-api/bill/create\\t5\\t749.12\\t103...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>162742\\t/front-api/bill/create\\t5\\t845.84\\t136...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>162808\\t/front-api/bill/create\\t9\\t1305.52\\t90...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>162943\\t/front-api/bill/create\\t3\\t568.89\\t138...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                   0\n",
       "0  2019162542\\t/front-api/bill/create\\t8\\t1057.31...\n",
       "1  162644\\t/front-api/bill/create\\t5\\t749.12\\t103...\n",
       "2  162742\\t/front-api/bill/create\\t5\\t845.84\\t136...\n",
       "3  162808\\t/front-api/bill/create\\t9\\t1305.52\\t90...\n",
       "4  162943\\t/front-api/bill/create\\t3\\t568.89\\t138..."
      ]
     },
     "execution_count": 153,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 导入log文件到pandas，加上列名\n",
    "df = pd.read_csv('./log.txt',header = None)\n",
    "df.head(5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 154,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "      <th>3</th>\n",
       "      <th>4</th>\n",
       "      <th>5</th>\n",
       "      <th>6</th>\n",
       "      <th>7</th>\n",
       "      <th>8</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2019162542</td>\n",
       "      <td>/front-api/bill/create</td>\n",
       "      <td>8</td>\n",
       "      <td>1057.31</td>\n",
       "      <td>88.75</td>\n",
       "      <td>177.72</td>\n",
       "      <td>132.0</td>\n",
       "      <td>60</td>\n",
       "      <td>2018-11-01 00:00:07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>162644</td>\n",
       "      <td>/front-api/bill/create</td>\n",
       "      <td>5</td>\n",
       "      <td>749.12</td>\n",
       "      <td>103.79</td>\n",
       "      <td>240.38</td>\n",
       "      <td>149.0</td>\n",
       "      <td>60</td>\n",
       "      <td>2018-11-01 00:01:07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>162742</td>\n",
       "      <td>/front-api/bill/create</td>\n",
       "      <td>5</td>\n",
       "      <td>845.84</td>\n",
       "      <td>136.31</td>\n",
       "      <td>225.73</td>\n",
       "      <td>169.0</td>\n",
       "      <td>60</td>\n",
       "      <td>2018-11-01 00:02:07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>162808</td>\n",
       "      <td>/front-api/bill/create</td>\n",
       "      <td>9</td>\n",
       "      <td>1305.52</td>\n",
       "      <td>90.12</td>\n",
       "      <td>196.61</td>\n",
       "      <td>145.0</td>\n",
       "      <td>60</td>\n",
       "      <td>2018-11-01 00:03:07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>162943</td>\n",
       "      <td>/front-api/bill/create</td>\n",
       "      <td>3</td>\n",
       "      <td>568.89</td>\n",
       "      <td>138.45</td>\n",
       "      <td>232.02</td>\n",
       "      <td>189.0</td>\n",
       "      <td>60</td>\n",
       "      <td>2018-11-01 00:04:07</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            0                       1  2        3       4       5      6   7  \\\n",
       "0  2019162542  /front-api/bill/create  8  1057.31   88.75  177.72  132.0  60   \n",
       "1      162644  /front-api/bill/create  5   749.12  103.79  240.38  149.0  60   \n",
       "2      162742  /front-api/bill/create  5   845.84  136.31  225.73  169.0  60   \n",
       "3      162808  /front-api/bill/create  9  1305.52   90.12  196.61  145.0  60   \n",
       "4      162943  /front-api/bill/create  3   568.89  138.45  232.02  189.0  60   \n",
       "\n",
       "                     8  \n",
       "0  2018-11-01 00:00:07  \n",
       "1  2018-11-01 00:01:07  \n",
       "2  2018-11-01 00:02:07  \n",
       "3  2018-11-01 00:03:07  \n",
       "4  2018-11-01 00:04:07  "
      ]
     },
     "execution_count": 154,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 加入分隔符\n",
    "df = pd.read_csv('./log.txt',header = None,sep = '\\t')\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 155,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>api</th>\n",
       "      <th>count</th>\n",
       "      <th>res_time_sum</th>\n",
       "      <th>res_time_min</th>\n",
       "      <th>res_time_max</th>\n",
       "      <th>res_time_avg</th>\n",
       "      <th>interval</th>\n",
       "      <th>created_at</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2019162542</td>\n",
       "      <td>/front-api/bill/create</td>\n",
       "      <td>8</td>\n",
       "      <td>1057.31</td>\n",
       "      <td>88.75</td>\n",
       "      <td>177.72</td>\n",
       "      <td>132.0</td>\n",
       "      <td>60</td>\n",
       "      <td>2018-11-01 00:00:07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>162644</td>\n",
       "      <td>/front-api/bill/create</td>\n",
       "      <td>5</td>\n",
       "      <td>749.12</td>\n",
       "      <td>103.79</td>\n",
       "      <td>240.38</td>\n",
       "      <td>149.0</td>\n",
       "      <td>60</td>\n",
       "      <td>2018-11-01 00:01:07</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           id                     api  count  res_time_sum  res_time_min  \\\n",
       "0  2019162542  /front-api/bill/create      8       1057.31         88.75   \n",
       "1      162644  /front-api/bill/create      5        749.12        103.79   \n",
       "\n",
       "   res_time_max  res_time_avg  interval           created_at  \n",
       "0        177.72         132.0        60  2018-11-01 00:00:07  \n",
       "1        240.38         149.0        60  2018-11-01 00:01:07  "
      ]
     },
     "execution_count": 155,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 更改列名\n",
    "df.columns = ['id','api','count','res_time_sum','res_time_min','res_time_max','res_time_avg','interval','created_at']\n",
    "df.head(2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 156,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>api</th>\n",
       "      <th>count</th>\n",
       "      <th>res_time_sum</th>\n",
       "      <th>res_time_min</th>\n",
       "      <th>res_time_max</th>\n",
       "      <th>res_time_avg</th>\n",
       "      <th>interval</th>\n",
       "      <th>created_at</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>85896</th>\n",
       "      <td>6566219</td>\n",
       "      <td>/front-api/bill/create</td>\n",
       "      <td>3</td>\n",
       "      <td>890.95</td>\n",
       "      <td>135.44</td>\n",
       "      <td>616.65</td>\n",
       "      <td>296.0</td>\n",
       "      <td>60</td>\n",
       "      <td>2019-02-09 12:28:04</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>115570</th>\n",
       "      <td>8551565</td>\n",
       "      <td>/front-api/bill/create</td>\n",
       "      <td>2</td>\n",
       "      <td>279.19</td>\n",
       "      <td>128.64</td>\n",
       "      <td>150.55</td>\n",
       "      <td>139.0</td>\n",
       "      <td>60</td>\n",
       "      <td>2019-03-19 00:01:03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>52466</th>\n",
       "      <td>4338111</td>\n",
       "      <td>/front-api/bill/create</td>\n",
       "      <td>1</td>\n",
       "      <td>125.72</td>\n",
       "      <td>125.72</td>\n",
       "      <td>125.72</td>\n",
       "      <td>125.0</td>\n",
       "      <td>60</td>\n",
       "      <td>2019-01-01 00:55:56</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>164402</th>\n",
       "      <td>12274680</td>\n",
       "      <td>/front-api/bill/create</td>\n",
       "      <td>17</td>\n",
       "      <td>4155.78</td>\n",
       "      <td>79.88</td>\n",
       "      <td>993.68</td>\n",
       "      <td>244.0</td>\n",
       "      <td>60</td>\n",
       "      <td>2019-05-13 22:05:03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>138361</th>\n",
       "      <td>10262437</td>\n",
       "      <td>/front-api/bill/create</td>\n",
       "      <td>8</td>\n",
       "      <td>1366.81</td>\n",
       "      <td>100.95</td>\n",
       "      <td>232.19</td>\n",
       "      <td>170.0</td>\n",
       "      <td>60</td>\n",
       "      <td>2019-04-14 12:49:31</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "              id                     api  count  res_time_sum  res_time_min  \\\n",
       "85896    6566219  /front-api/bill/create      3        890.95        135.44   \n",
       "115570   8551565  /front-api/bill/create      2        279.19        128.64   \n",
       "52466    4338111  /front-api/bill/create      1        125.72        125.72   \n",
       "164402  12274680  /front-api/bill/create     17       4155.78         79.88   \n",
       "138361  10262437  /front-api/bill/create      8       1366.81        100.95   \n",
       "\n",
       "        res_time_max  res_time_avg  interval           created_at  \n",
       "85896         616.65         296.0        60  2019-02-09 12:28:04  \n",
       "115570        150.55         139.0        60  2019-03-19 00:01:03  \n",
       "52466         125.72         125.0        60  2019-01-01 00:55:56  \n",
       "164402        993.68         244.0        60  2019-05-13 22:05:03  \n",
       "138361        232.19         170.0        60  2019-04-14 12:49:31  "
      ]
     },
     "execution_count": 156,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 随机采样5行数据查看\n",
    "df.sample(5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 157,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(179496, 9)"
      ]
     },
     "execution_count": 157,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 查看有多少行，多少列\n",
    "df.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 158,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "id                int64\n",
       "api              object\n",
       "count             int64\n",
       "res_time_sum    float64\n",
       "res_time_min    float64\n",
       "res_time_max    float64\n",
       "res_time_avg    float64\n",
       "interval          int64\n",
       "created_at       object\n",
       "dtype: object"
      ]
     },
     "execution_count": 158,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 查看每一列的数据类型\n",
    "df.dtypes"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 159,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 179496 entries, 0 to 179495\n",
      "Data columns (total 9 columns):\n",
      " #   Column        Non-Null Count   Dtype  \n",
      "---  ------        --------------   -----  \n",
      " 0   id            179496 non-null  int64  \n",
      " 1   api           179496 non-null  object \n",
      " 2   count         179496 non-null  int64  \n",
      " 3   res_time_sum  179496 non-null  float64\n",
      " 4   res_time_min  179496 non-null  float64\n",
      " 5   res_time_max  179496 non-null  float64\n",
      " 6   res_time_avg  179496 non-null  float64\n",
      " 7   interval      179496 non-null  int64  \n",
      " 8   created_at    179496 non-null  object \n",
      "dtypes: float64(4), int64(3), object(2)\n",
      "memory usage: 12.3+ MB\n"
     ]
    }
   ],
   "source": [
    "# 查看内存占用空间\n",
    "df.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 160,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "count                     179496\n",
       "unique                         1\n",
       "top       /front-api/bill/create\n",
       "freq                      179496\n",
       "Name: api, dtype: object"
      ]
     },
     "execution_count": 160,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 使用.describe()查看一列数据的属性\n",
    "df['api'].describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 161,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 可以看出api这一列只有一个数值，都是重复的，为了优化内存，可以把这一列删除\n",
    "df = df.drop('api',axis = 1)\n",
    "# 优化后再copy一份，删除数据时，要使用axis指定是删除行，还是列，一般默认问为行，1代表列"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 162,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 179496 entries, 0 to 179495\n",
      "Data columns (total 8 columns):\n",
      " #   Column        Non-Null Count   Dtype  \n",
      "---  ------        --------------   -----  \n",
      " 0   id            179496 non-null  int64  \n",
      " 1   count         179496 non-null  int64  \n",
      " 2   res_time_sum  179496 non-null  float64\n",
      " 3   res_time_min  179496 non-null  float64\n",
      " 4   res_time_max  179496 non-null  float64\n",
      " 5   res_time_avg  179496 non-null  float64\n",
      " 6   interval      179496 non-null  int64  \n",
      " 7   created_at    179496 non-null  object \n",
      "dtypes: float64(4), int64(3), object(1)\n",
      "memory usage: 11.0+ MB\n"
     ]
    }
   ],
   "source": [
    "df.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 163,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>count</th>\n",
       "      <th>res_time_sum</th>\n",
       "      <th>res_time_min</th>\n",
       "      <th>res_time_max</th>\n",
       "      <th>res_time_avg</th>\n",
       "      <th>interval</th>\n",
       "      <th>created_at</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2019162542</td>\n",
       "      <td>8</td>\n",
       "      <td>1057.31</td>\n",
       "      <td>88.75</td>\n",
       "      <td>177.72</td>\n",
       "      <td>132.0</td>\n",
       "      <td>60</td>\n",
       "      <td>2018-11-01 00:00:07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>162644</td>\n",
       "      <td>5</td>\n",
       "      <td>749.12</td>\n",
       "      <td>103.79</td>\n",
       "      <td>240.38</td>\n",
       "      <td>149.0</td>\n",
       "      <td>60</td>\n",
       "      <td>2018-11-01 00:01:07</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           id  count  res_time_sum  res_time_min  res_time_max  res_time_avg  \\\n",
       "0  2019162542      8       1057.31         88.75        177.72         132.0   \n",
       "1      162644      5        749.12        103.79        240.38         149.0   \n",
       "\n",
       "   interval           created_at  \n",
       "0        60  2018-11-01 00:00:07  \n",
       "1        60  2018-11-01 00:01:07  "
      ]
     },
     "execution_count": 163,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.head(2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 164,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "count                  179496\n",
       "unique                 179496\n",
       "top       2019-03-07 14:53:50\n",
       "freq                        1\n",
       "Name: created_at, dtype: object"
      ]
     },
     "execution_count": 164,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 再查看created_at这一列数据的属性\n",
    "df['created_at'].describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 148,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 由上可知，created_at这一列也只有一个数值，都是重复的，这一列数据也可以删除，以优化内存占用\n",
    "# df = df.drop('created_at',axis = 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 149,
   "metadata": {},
   "outputs": [],
   "source": [
    "# df.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 150,
   "metadata": {},
   "outputs": [],
   "source": [
    "# df.head(2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 165,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "RangeIndex(start=0, stop=179496, step=1)"
      ]
     },
     "execution_count": 165,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 查看当前索引\n",
    "df.index"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 166,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>count</th>\n",
       "      <th>res_time_sum</th>\n",
       "      <th>res_time_min</th>\n",
       "      <th>res_time_max</th>\n",
       "      <th>res_time_avg</th>\n",
       "      <th>interval</th>\n",
       "      <th>created_at</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>created_at</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2018-11-01 00:00:07</th>\n",
       "      <td>2019162542</td>\n",
       "      <td>8</td>\n",
       "      <td>1057.31</td>\n",
       "      <td>88.75</td>\n",
       "      <td>177.72</td>\n",
       "      <td>132.0</td>\n",
       "      <td>60</td>\n",
       "      <td>2018-11-01 00:00:07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-11-01 00:01:07</th>\n",
       "      <td>162644</td>\n",
       "      <td>5</td>\n",
       "      <td>749.12</td>\n",
       "      <td>103.79</td>\n",
       "      <td>240.38</td>\n",
       "      <td>149.0</td>\n",
       "      <td>60</td>\n",
       "      <td>2018-11-01 00:01:07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-11-01 00:02:07</th>\n",
       "      <td>162742</td>\n",
       "      <td>5</td>\n",
       "      <td>845.84</td>\n",
       "      <td>136.31</td>\n",
       "      <td>225.73</td>\n",
       "      <td>169.0</td>\n",
       "      <td>60</td>\n",
       "      <td>2018-11-01 00:02:07</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                             id  count  res_time_sum  res_time_min  \\\n",
       "created_at                                                           \n",
       "2018-11-01 00:00:07  2019162542      8       1057.31         88.75   \n",
       "2018-11-01 00:01:07      162644      5        749.12        103.79   \n",
       "2018-11-01 00:02:07      162742      5        845.84        136.31   \n",
       "\n",
       "                     res_time_max  res_time_avg  interval           created_at  \n",
       "created_at                                                                      \n",
       "2018-11-01 00:00:07        177.72         132.0        60  2018-11-01 00:00:07  \n",
       "2018-11-01 00:01:07        240.38         149.0        60  2018-11-01 00:01:07  \n",
       "2018-11-01 00:02:07        225.73         169.0        60  2018-11-01 00:02:07  "
      ]
     },
     "execution_count": 166,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 使用日志时间created_at这一列替换当前索引\n",
    "df.index = df['created_at']\n",
    "df.head(3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 167,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 现在通过时间查看一行数据是不行的，因为此时作为索引的created_at是字符串类型，需要转换为时间类型,我们才能通过时间来查找\n",
    "df.index = pd.to_datetime(df.created_at)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 168,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DatetimeIndex(['2018-11-01 00:00:07', '2018-11-01 00:01:07',\n",
       "               '2018-11-01 00:02:07', '2018-11-01 00:03:07',\n",
       "               '2018-11-01 00:04:07', '2018-11-01 00:05:07',\n",
       "               '2018-11-01 00:06:07', '2018-11-01 00:07:07',\n",
       "               '2018-11-01 00:08:07', '2018-11-01 00:09:07',\n",
       "               ...\n",
       "               '2019-05-30 23:01:21', '2019-05-30 23:02:21',\n",
       "               '2019-05-30 23:03:21', '2019-05-30 23:04:21',\n",
       "               '2019-05-30 23:05:21', '2019-05-30 23:06:21',\n",
       "               '2019-05-30 23:07:21', '2019-05-30 23:08:21',\n",
       "               '2019-05-30 23:09:21', '2019-05-30 23:10:21'],\n",
       "              dtype='datetime64[ns]', name='created_at', length=179496, freq=None)"
      ]
     },
     "execution_count": 168,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.index"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 170,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>count</th>\n",
       "      <th>res_time_sum</th>\n",
       "      <th>res_time_min</th>\n",
       "      <th>res_time_max</th>\n",
       "      <th>res_time_avg</th>\n",
       "      <th>interval</th>\n",
       "      <th>created_at</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>created_at</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2019-05-01 00:00:48</th>\n",
       "      <td>11406128</td>\n",
       "      <td>6</td>\n",
       "      <td>2105.08</td>\n",
       "      <td>125.74</td>\n",
       "      <td>992.46</td>\n",
       "      <td>350.0</td>\n",
       "      <td>60</td>\n",
       "      <td>2019-05-01 00:00:48</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-01 00:01:48</th>\n",
       "      <td>11406236</td>\n",
       "      <td>7</td>\n",
       "      <td>2579.11</td>\n",
       "      <td>76.55</td>\n",
       "      <td>987.47</td>\n",
       "      <td>368.0</td>\n",
       "      <td>60</td>\n",
       "      <td>2019-05-01 00:01:48</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-01 00:02:48</th>\n",
       "      <td>11406347</td>\n",
       "      <td>7</td>\n",
       "      <td>1277.79</td>\n",
       "      <td>109.65</td>\n",
       "      <td>236.73</td>\n",
       "      <td>182.0</td>\n",
       "      <td>60</td>\n",
       "      <td>2019-05-01 00:02:48</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-01 00:03:48</th>\n",
       "      <td>11406446</td>\n",
       "      <td>7</td>\n",
       "      <td>2137.20</td>\n",
       "      <td>131.55</td>\n",
       "      <td>920.52</td>\n",
       "      <td>305.0</td>\n",
       "      <td>60</td>\n",
       "      <td>2019-05-01 00:03:48</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-01 00:04:48</th>\n",
       "      <td>11406488</td>\n",
       "      <td>13</td>\n",
       "      <td>2948.70</td>\n",
       "      <td>86.42</td>\n",
       "      <td>491.31</td>\n",
       "      <td>226.0</td>\n",
       "      <td>60</td>\n",
       "      <td>2019-05-01 00:04:48</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-01 23:55:49</th>\n",
       "      <td>11475363</td>\n",
       "      <td>6</td>\n",
       "      <td>1083.97</td>\n",
       "      <td>70.85</td>\n",
       "      <td>262.22</td>\n",
       "      <td>180.0</td>\n",
       "      <td>60</td>\n",
       "      <td>2019-05-01 23:55:49</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-01 23:56:49</th>\n",
       "      <td>11475483</td>\n",
       "      <td>4</td>\n",
       "      <td>840.00</td>\n",
       "      <td>117.31</td>\n",
       "      <td>382.63</td>\n",
       "      <td>210.0</td>\n",
       "      <td>60</td>\n",
       "      <td>2019-05-01 23:56:49</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-01 23:57:49</th>\n",
       "      <td>11475550</td>\n",
       "      <td>2</td>\n",
       "      <td>295.51</td>\n",
       "      <td>101.71</td>\n",
       "      <td>193.80</td>\n",
       "      <td>147.0</td>\n",
       "      <td>60</td>\n",
       "      <td>2019-05-01 23:57:49</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-01 23:58:49</th>\n",
       "      <td>11475597</td>\n",
       "      <td>2</td>\n",
       "      <td>431.99</td>\n",
       "      <td>84.43</td>\n",
       "      <td>347.56</td>\n",
       "      <td>215.0</td>\n",
       "      <td>60</td>\n",
       "      <td>2019-05-01 23:58:49</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-01 23:59:49</th>\n",
       "      <td>11475664</td>\n",
       "      <td>3</td>\n",
       "      <td>428.84</td>\n",
       "      <td>103.58</td>\n",
       "      <td>206.57</td>\n",
       "      <td>142.0</td>\n",
       "      <td>60</td>\n",
       "      <td>2019-05-01 23:59:49</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>884 rows × 8 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                           id  count  res_time_sum  res_time_min  \\\n",
       "created_at                                                         \n",
       "2019-05-01 00:00:48  11406128      6       2105.08        125.74   \n",
       "2019-05-01 00:01:48  11406236      7       2579.11         76.55   \n",
       "2019-05-01 00:02:48  11406347      7       1277.79        109.65   \n",
       "2019-05-01 00:03:48  11406446      7       2137.20        131.55   \n",
       "2019-05-01 00:04:48  11406488     13       2948.70         86.42   \n",
       "...                       ...    ...           ...           ...   \n",
       "2019-05-01 23:55:49  11475363      6       1083.97         70.85   \n",
       "2019-05-01 23:56:49  11475483      4        840.00        117.31   \n",
       "2019-05-01 23:57:49  11475550      2        295.51        101.71   \n",
       "2019-05-01 23:58:49  11475597      2        431.99         84.43   \n",
       "2019-05-01 23:59:49  11475664      3        428.84        103.58   \n",
       "\n",
       "                     res_time_max  res_time_avg  interval           created_at  \n",
       "created_at                                                                      \n",
       "2019-05-01 00:00:48        992.46         350.0        60  2019-05-01 00:00:48  \n",
       "2019-05-01 00:01:48        987.47         368.0        60  2019-05-01 00:01:48  \n",
       "2019-05-01 00:02:48        236.73         182.0        60  2019-05-01 00:02:48  \n",
       "2019-05-01 00:03:48        920.52         305.0        60  2019-05-01 00:03:48  \n",
       "2019-05-01 00:04:48        491.31         226.0        60  2019-05-01 00:04:48  \n",
       "...                           ...           ...       ...                  ...  \n",
       "2019-05-01 23:55:49        262.22         180.0        60  2019-05-01 23:55:49  \n",
       "2019-05-01 23:56:49        382.63         210.0        60  2019-05-01 23:56:49  \n",
       "2019-05-01 23:57:49        193.80         147.0        60  2019-05-01 23:57:49  \n",
       "2019-05-01 23:58:49        347.56         215.0        60  2019-05-01 23:58:49  \n",
       "2019-05-01 23:59:49        206.57         142.0        60  2019-05-01 23:59:49  \n",
       "\n",
       "[884 rows x 8 columns]"
      ]
     },
     "execution_count": 170,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 现在可以通过时间查询数据了\n",
    "df['2019-05-01']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 172,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "count    179496.0\n",
       "mean         60.0\n",
       "std           0.0\n",
       "min          60.0\n",
       "25%          60.0\n",
       "50%          60.0\n",
       "75%          60.0\n",
       "max          60.0\n",
       "Name: interval, dtype: float64"
      ]
     },
     "execution_count": 172,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 查看interval这一列数据的属性\n",
    "df.interval.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 173,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "count    179496.0\n",
       "mean         60.0\n",
       "std           0.0\n",
       "min          60.0\n",
       "25%          60.0\n",
       "50%          60.0\n",
       "75%          60.0\n",
       "max          60.0\n",
       "Name: interval, dtype: float64"
      ]
     },
     "execution_count": 173,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 查看interval这一列数据的属性\n",
    "df['interval'].describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 174,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([60], dtype=int64)"
      ]
     },
     "execution_count": 174,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 取出interval这一列有几种数值\n",
    "df.interval.unique()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 175,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 由上可以看出，interval只有一种数值，都是重复值，对我们的数据分析作用不大，可以删掉\n",
    "df = df.drop(['id','interval'],axis = 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 176,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>count</th>\n",
       "      <th>res_time_sum</th>\n",
       "      <th>res_time_min</th>\n",
       "      <th>res_time_max</th>\n",
       "      <th>res_time_avg</th>\n",
       "      <th>created_at</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>created_at</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2019-04-17 12:04:34</th>\n",
       "      <td>3</td>\n",
       "      <td>704.34</td>\n",
       "      <td>191.78</td>\n",
       "      <td>309.31</td>\n",
       "      <td>234.0</td>\n",
       "      <td>2019-04-17 12:04:34</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-11-18 15:42:41</th>\n",
       "      <td>13</td>\n",
       "      <td>1767.06</td>\n",
       "      <td>77.61</td>\n",
       "      <td>272.06</td>\n",
       "      <td>135.0</td>\n",
       "      <td>2018-11-18 15:42:41</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-02-25 13:55:37</th>\n",
       "      <td>4</td>\n",
       "      <td>476.77</td>\n",
       "      <td>87.39</td>\n",
       "      <td>173.60</td>\n",
       "      <td>119.0</td>\n",
       "      <td>2019-02-25 13:55:37</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-12-01 15:59:09</th>\n",
       "      <td>4</td>\n",
       "      <td>521.01</td>\n",
       "      <td>99.04</td>\n",
       "      <td>189.80</td>\n",
       "      <td>130.0</td>\n",
       "      <td>2018-12-01 15:59:09</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-12-06 16:15:18</th>\n",
       "      <td>18</td>\n",
       "      <td>2274.77</td>\n",
       "      <td>78.37</td>\n",
       "      <td>186.18</td>\n",
       "      <td>126.0</td>\n",
       "      <td>2018-12-06 16:15:18</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                     count  res_time_sum  res_time_min  res_time_max  \\\n",
       "created_at                                                             \n",
       "2019-04-17 12:04:34      3        704.34        191.78        309.31   \n",
       "2018-11-18 15:42:41     13       1767.06         77.61        272.06   \n",
       "2019-02-25 13:55:37      4        476.77         87.39        173.60   \n",
       "2018-12-01 15:59:09      4        521.01         99.04        189.80   \n",
       "2018-12-06 16:15:18     18       2274.77         78.37        186.18   \n",
       "\n",
       "                     res_time_avg           created_at  \n",
       "created_at                                              \n",
       "2019-04-17 12:04:34         234.0  2019-04-17 12:04:34  \n",
       "2018-11-18 15:42:41         135.0  2018-11-18 15:42:41  \n",
       "2019-02-25 13:55:37         119.0  2019-02-25 13:55:37  \n",
       "2018-12-01 15:59:09         130.0  2018-12-01 15:59:09  \n",
       "2018-12-06 16:15:18         126.0  2018-12-06 16:15:18  "
      ]
     },
     "execution_count": 176,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.sample(5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 177,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>count</th>\n",
       "      <th>res_time_sum</th>\n",
       "      <th>res_time_min</th>\n",
       "      <th>res_time_max</th>\n",
       "      <th>res_time_avg</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>179496.000000</td>\n",
       "      <td>179496.000000</td>\n",
       "      <td>179496.000000</td>\n",
       "      <td>179496.000000</td>\n",
       "      <td>179496.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>7.175909</td>\n",
       "      <td>1393.177832</td>\n",
       "      <td>108.419626</td>\n",
       "      <td>359.880374</td>\n",
       "      <td>187.812208</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>4.325160</td>\n",
       "      <td>1499.486073</td>\n",
       "      <td>79.640693</td>\n",
       "      <td>638.919827</td>\n",
       "      <td>224.464813</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>36.550000</td>\n",
       "      <td>3.210000</td>\n",
       "      <td>36.550000</td>\n",
       "      <td>36.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>4.000000</td>\n",
       "      <td>607.707500</td>\n",
       "      <td>83.410000</td>\n",
       "      <td>198.280000</td>\n",
       "      <td>144.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>7.000000</td>\n",
       "      <td>1154.905000</td>\n",
       "      <td>97.120000</td>\n",
       "      <td>256.090000</td>\n",
       "      <td>167.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>10.000000</td>\n",
       "      <td>1834.117500</td>\n",
       "      <td>116.990000</td>\n",
       "      <td>374.410000</td>\n",
       "      <td>202.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>31.000000</td>\n",
       "      <td>142650.550000</td>\n",
       "      <td>18896.640000</td>\n",
       "      <td>142468.270000</td>\n",
       "      <td>71325.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "               count   res_time_sum   res_time_min   res_time_max  \\\n",
       "count  179496.000000  179496.000000  179496.000000  179496.000000   \n",
       "mean        7.175909    1393.177832     108.419626     359.880374   \n",
       "std         4.325160    1499.486073      79.640693     638.919827   \n",
       "min         1.000000      36.550000       3.210000      36.550000   \n",
       "25%         4.000000     607.707500      83.410000     198.280000   \n",
       "50%         7.000000    1154.905000      97.120000     256.090000   \n",
       "75%        10.000000    1834.117500     116.990000     374.410000   \n",
       "max        31.000000  142650.550000   18896.640000  142468.270000   \n",
       "\n",
       "        res_time_avg  \n",
       "count  179496.000000  \n",
       "mean      187.812208  \n",
       "std       224.464813  \n",
       "min        36.000000  \n",
       "25%       144.000000  \n",
       "50%       167.000000  \n",
       "75%       202.000000  \n",
       "max     71325.000000  "
      ]
     },
     "execution_count": 177,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 查看整张表的统计属性\n",
    "df.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 179,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:>"
      ]
     },
     "execution_count": 179,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 初步分析conut(访问次数)，绘制直方图\n",
    "df['count'].hist()\n",
    "# 反映出每分钟端口调用的次数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 180,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 对直方图进行美化\n",
    "df['count'].hist(bins = 30)\n",
    "plt.show()\n",
    "# bins表示柱的数量"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 181,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 切出一天的数据，绘制这一天时段的接口调用情况\n",
    "df['2019-5-1']['count'].plot()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 188,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>count</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>created_at</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2019-05-01 00:00:00</th>\n",
       "      <td>4.428571</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-01 01:00:00</th>\n",
       "      <td>2.272727</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-01 02:00:00</th>\n",
       "      <td>1.833333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-01 03:00:00</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-01 04:00:00</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-01 05:00:00</th>\n",
       "      <td>2.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-01 06:00:00</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-01 07:00:00</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-01 08:00:00</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-01 09:00:00</th>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-01 10:00:00</th>\n",
       "      <td>1.400000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-01 11:00:00</th>\n",
       "      <td>1.604651</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-01 12:00:00</th>\n",
       "      <td>3.298246</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-01 13:00:00</th>\n",
       "      <td>6.866667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-01 14:00:00</th>\n",
       "      <td>10.483333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-01 15:00:00</th>\n",
       "      <td>12.333333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-01 16:00:00</th>\n",
       "      <td>9.916667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-01 17:00:00</th>\n",
       "      <td>7.666667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-01 18:00:00</th>\n",
       "      <td>6.783333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-01 19:00:00</th>\n",
       "      <td>9.850000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-01 20:00:00</th>\n",
       "      <td>11.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-01 21:00:00</th>\n",
       "      <td>10.416667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-01 22:00:00</th>\n",
       "      <td>8.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-01 23:00:00</th>\n",
       "      <td>5.083333</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                         count\n",
       "created_at                    \n",
       "2019-05-01 00:00:00   4.428571\n",
       "2019-05-01 01:00:00   2.272727\n",
       "2019-05-01 02:00:00   1.833333\n",
       "2019-05-01 03:00:00        NaN\n",
       "2019-05-01 04:00:00        NaN\n",
       "2019-05-01 05:00:00   2.000000\n",
       "2019-05-01 06:00:00        NaN\n",
       "2019-05-01 07:00:00        NaN\n",
       "2019-05-01 08:00:00        NaN\n",
       "2019-05-01 09:00:00   1.000000\n",
       "2019-05-01 10:00:00   1.400000\n",
       "2019-05-01 11:00:00   1.604651\n",
       "2019-05-01 12:00:00   3.298246\n",
       "2019-05-01 13:00:00   6.866667\n",
       "2019-05-01 14:00:00  10.483333\n",
       "2019-05-01 15:00:00  12.333333\n",
       "2019-05-01 16:00:00   9.916667\n",
       "2019-05-01 17:00:00   7.666667\n",
       "2019-05-01 18:00:00   6.783333\n",
       "2019-05-01 19:00:00   9.850000\n",
       "2019-05-01 20:00:00  11.000000\n",
       "2019-05-01 21:00:00  10.416667\n",
       "2019-05-01 22:00:00   8.000000\n",
       "2019-05-01 23:00:00   5.083333"
      ]
     },
     "execution_count": 188,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 把count重新采样，数据间隔改为1小时\n",
    "df2 = df['2019-5-1']\n",
    "df2 = df2[['count']].resample('1H').mean()\n",
    "df2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 189,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 绘制折线图\n",
    "df2['count'].plot()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 195,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x216 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 折线图和直方图可以看到数据高峰，但分不清具体时间段。所以我们可以绘制柱状图\n",
    "plt.figure(figsize = (10,3))\n",
    "df2['count'].plot(kind = 'bar')\n",
    "plt.xticks(rotation = 60)\n",
    "# 文字旋转60度\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 197,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 分析有无异常时间段访问过于频繁，使用箱线图\n",
    "df['2019-5-1'][['count']].boxplot(showmeans = True,meanline = True)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 198,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>count</th>\n",
       "      <th>res_time_sum</th>\n",
       "      <th>res_time_min</th>\n",
       "      <th>res_time_max</th>\n",
       "      <th>res_time_avg</th>\n",
       "      <th>created_at</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>created_at</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2018-11-01 20:47:09</th>\n",
       "      <td>21</td>\n",
       "      <td>3117.20</td>\n",
       "      <td>84.90</td>\n",
       "      <td>260.82</td>\n",
       "      <td>148.0</td>\n",
       "      <td>2018-11-01 20:47:09</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-11-01 21:03:09</th>\n",
       "      <td>21</td>\n",
       "      <td>3706.20</td>\n",
       "      <td>78.12</td>\n",
       "      <td>321.47</td>\n",
       "      <td>176.0</td>\n",
       "      <td>2018-11-01 21:03:09</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-11-01 21:13:09</th>\n",
       "      <td>24</td>\n",
       "      <td>4602.03</td>\n",
       "      <td>76.31</td>\n",
       "      <td>391.12</td>\n",
       "      <td>191.0</td>\n",
       "      <td>2018-11-01 21:13:09</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-11-02 21:34:11</th>\n",
       "      <td>30</td>\n",
       "      <td>4610.15</td>\n",
       "      <td>72.49</td>\n",
       "      <td>463.41</td>\n",
       "      <td>153.0</td>\n",
       "      <td>2018-11-02 21:34:11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-11-03 14:20:13</th>\n",
       "      <td>21</td>\n",
       "      <td>3113.93</td>\n",
       "      <td>74.29</td>\n",
       "      <td>266.20</td>\n",
       "      <td>148.0</td>\n",
       "      <td>2018-11-03 14:20:13</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-30 21:33:21</th>\n",
       "      <td>27</td>\n",
       "      <td>6456.64</td>\n",
       "      <td>99.65</td>\n",
       "      <td>978.91</td>\n",
       "      <td>239.0</td>\n",
       "      <td>2019-05-30 21:33:21</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-30 21:43:21</th>\n",
       "      <td>21</td>\n",
       "      <td>6371.84</td>\n",
       "      <td>65.98</td>\n",
       "      <td>1175.37</td>\n",
       "      <td>303.0</td>\n",
       "      <td>2019-05-30 21:43:21</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-30 21:47:21</th>\n",
       "      <td>21</td>\n",
       "      <td>3992.83</td>\n",
       "      <td>87.83</td>\n",
       "      <td>440.88</td>\n",
       "      <td>190.0</td>\n",
       "      <td>2019-05-30 21:47:21</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-30 21:53:21</th>\n",
       "      <td>24</td>\n",
       "      <td>8467.02</td>\n",
       "      <td>120.22</td>\n",
       "      <td>1511.17</td>\n",
       "      <td>352.0</td>\n",
       "      <td>2019-05-30 21:53:21</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-30 22:17:21</th>\n",
       "      <td>21</td>\n",
       "      <td>4926.35</td>\n",
       "      <td>85.01</td>\n",
       "      <td>826.90</td>\n",
       "      <td>234.0</td>\n",
       "      <td>2019-05-30 22:17:21</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>746 rows × 6 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                     count  res_time_sum  res_time_min  res_time_max  \\\n",
       "created_at                                                             \n",
       "2018-11-01 20:47:09     21       3117.20         84.90        260.82   \n",
       "2018-11-01 21:03:09     21       3706.20         78.12        321.47   \n",
       "2018-11-01 21:13:09     24       4602.03         76.31        391.12   \n",
       "2018-11-02 21:34:11     30       4610.15         72.49        463.41   \n",
       "2018-11-03 14:20:13     21       3113.93         74.29        266.20   \n",
       "...                    ...           ...           ...           ...   \n",
       "2019-05-30 21:33:21     27       6456.64         99.65        978.91   \n",
       "2019-05-30 21:43:21     21       6371.84         65.98       1175.37   \n",
       "2019-05-30 21:47:21     21       3992.83         87.83        440.88   \n",
       "2019-05-30 21:53:21     24       8467.02        120.22       1511.17   \n",
       "2019-05-30 22:17:21     21       4926.35         85.01        826.90   \n",
       "\n",
       "                     res_time_avg           created_at  \n",
       "created_at                                              \n",
       "2018-11-01 20:47:09         148.0  2018-11-01 20:47:09  \n",
       "2018-11-01 21:03:09         176.0  2018-11-01 21:03:09  \n",
       "2018-11-01 21:13:09         191.0  2018-11-01 21:13:09  \n",
       "2018-11-02 21:34:11         153.0  2018-11-02 21:34:11  \n",
       "2018-11-03 14:20:13         148.0  2018-11-03 14:20:13  \n",
       "...                           ...                  ...  \n",
       "2019-05-30 21:33:21         239.0  2019-05-30 21:33:21  \n",
       "2019-05-30 21:43:21         303.0  2019-05-30 21:43:21  \n",
       "2019-05-30 21:47:21         190.0  2019-05-30 21:47:21  \n",
       "2019-05-30 21:53:21         352.0  2019-05-30 21:53:21  \n",
       "2019-05-30 22:17:21         234.0  2019-05-30 22:17:21  \n",
       "\n",
       "[746 rows x 6 columns]"
      ]
     },
     "execution_count": 198,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 把大于20的看做异常值，取出\n",
    "df[df['count']>20]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 200,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 分析某一天的平均响应时间\n",
    "df['2019-5-1']['res_time_avg'].plot()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 201,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 查看异常值\n",
    "df['2019-5-1'][['res_time_avg']].boxplot()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 202,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\python3.7.6\\lib\\site-packages\\ipykernel_launcher.py:3: UserWarning: Boolean Series key will be reindexed to match DataFrame index.\n",
      "  This is separate from the ipykernel package so we can avoid doing imports until\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>count</th>\n",
       "      <th>res_time_sum</th>\n",
       "      <th>res_time_min</th>\n",
       "      <th>res_time_max</th>\n",
       "      <th>res_time_avg</th>\n",
       "      <th>created_at</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>created_at</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2019-05-01 00:34:48</th>\n",
       "      <td>1</td>\n",
       "      <td>1694.47</td>\n",
       "      <td>1694.47</td>\n",
       "      <td>1694.47</td>\n",
       "      <td>1694.0</td>\n",
       "      <td>2019-05-01 00:34:48</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-01 14:00:49</th>\n",
       "      <td>17</td>\n",
       "      <td>19770.18</td>\n",
       "      <td>207.54</td>\n",
       "      <td>2974.52</td>\n",
       "      <td>1162.0</td>\n",
       "      <td>2019-05-01 14:00:49</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-01 18:36:49</th>\n",
       "      <td>8</td>\n",
       "      <td>8799.92</td>\n",
       "      <td>96.59</td>\n",
       "      <td>3233.26</td>\n",
       "      <td>1099.0</td>\n",
       "      <td>2019-05-01 18:36:49</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-01 19:09:49</th>\n",
       "      <td>6</td>\n",
       "      <td>7399.94</td>\n",
       "      <td>307.39</td>\n",
       "      <td>3153.02</td>\n",
       "      <td>1233.0</td>\n",
       "      <td>2019-05-01 19:09:49</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-01 19:10:49</th>\n",
       "      <td>13</td>\n",
       "      <td>23595.60</td>\n",
       "      <td>206.20</td>\n",
       "      <td>4664.84</td>\n",
       "      <td>1815.0</td>\n",
       "      <td>2019-05-01 19:10:49</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-01 20:38:49</th>\n",
       "      <td>15</td>\n",
       "      <td>16169.25</td>\n",
       "      <td>142.47</td>\n",
       "      <td>3624.26</td>\n",
       "      <td>1077.0</td>\n",
       "      <td>2019-05-01 20:38:49</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                     count  res_time_sum  res_time_min  res_time_max  \\\n",
       "created_at                                                             \n",
       "2019-05-01 00:34:48      1       1694.47       1694.47       1694.47   \n",
       "2019-05-01 14:00:49     17      19770.18        207.54       2974.52   \n",
       "2019-05-01 18:36:49      8       8799.92         96.59       3233.26   \n",
       "2019-05-01 19:09:49      6       7399.94        307.39       3153.02   \n",
       "2019-05-01 19:10:49     13      23595.60        206.20       4664.84   \n",
       "2019-05-01 20:38:49     15      16169.25        142.47       3624.26   \n",
       "\n",
       "                     res_time_avg           created_at  \n",
       "created_at                                              \n",
       "2019-05-01 00:34:48        1694.0  2019-05-01 00:34:48  \n",
       "2019-05-01 14:00:49        1162.0  2019-05-01 14:00:49  \n",
       "2019-05-01 18:36:49        1099.0  2019-05-01 18:36:49  \n",
       "2019-05-01 19:09:49        1233.0  2019-05-01 19:09:49  \n",
       "2019-05-01 19:10:49        1815.0  2019-05-01 19:10:49  \n",
       "2019-05-01 20:38:49        1077.0  2019-05-01 20:38:49  "
      ]
     },
     "execution_count": 202,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 取出响应时间大于1000的数据\n",
    "df2 = df['2019-5-1']\n",
    "df2[df['res_time_avg']>1000]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 205,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYQAAAEHCAYAAACumTGlAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/d3fzzAAAACXBIWXMAAAsTAAALEwEAmpwYAABFFElEQVR4nO2deXxU1fmHn3eWZLKxhh0hQRFwQa2Iuz+pVlxxayt2UVurtmqxrVpBq6IVlxaXulFxFxXFHVncUaQuCAJh37cQlhBIIPss5/fHvZNMkplszGQmyft8PsnMnHvuvd+59855z3nPOe8RYwyKoiiK4oi3AEVRFCUxUIOgKIqiAGoQFEVRFBs1CIqiKAqgBkFRFEWxUYOgKIqiAOCKt4DmkpmZabKysuItQ1EUpVWxcOHC3caYbuG2tVqDkJWVxYIFC+ItQ1EUpVUhIpsjbVOXkaIoigKoQVAURVFs1CAoiqIoQCvuQwiH1+slNzeX8vLyeEtRwuDxeOjbty9utzveUhRFCUObMgi5ublkZGSQlZWFiMRbjhKCMYaCggJyc3PJzs6OtxxFUcLQplxG5eXldO3aVY1BAiIidO3aVVtvipLAtCmDAKgxSGD03ijRZEtBKVljZ7I8ryjeUtoMbc4gKIrSPvhkxQ4A3lm4Lc5K2g5qEBKcxx57jNLS0qrP5557LoWFhfETpChKm0UNQgwxxhAIBA7oGLUNwqxZs+jUqdMBKlMURalLmxplFMo9Hy5nRd6+qB7zsN4duPuCw+vNs2nTJs455xxGjBjBt99+y0UXXcSMGTOoqKjg4osv5p577qGkpIRf/vKX5Obm4vf7ufPOO7nsssvqHOvxxx8nLy+PESNGkJmZyZw5c6pCdhQXF3P22Wdzyimn8N1333HUUUfxu9/9jrvvvptdu3bx2muvMXz4cEpKSvjzn//M0qVL8fl8jB8/ngsvvDCs9uXLl/O73/2OyspKAoEA77zzDm63m/PPP59ly5YBMHHiRIqLixk/fjynn346xxxzDAsXLiQ/P59XXnmFBx54gKVLl3LZZZdx3333HfhFVxSlxWizBiGerF69mhdffJGLLrqIt99+m/nz52OMYdSoUcydO5f8/Hx69+7NzJkzASgqCt8pNmbMGB555BHmzJlDZmZmne3r1q3jrbfeYvLkyRx33HG8/vrrzJs3j+nTp3P//ffz/vvvM2HCBH7605/ywgsvUFhYyPDhwznzzDNJS0urc7z//ve/3HTTTfz617+msrISv9/Pzp076/2uSUlJzJ07l//85z9ceOGFLFy4kC5dunDwwQfz17/+la5duzbjCiqKEg/arEFoqCYfS/r3788JJ5zALbfcwieffMIxxxwDQHFxMWvXruXUU0/llltu4bbbbuP888/n1FNPbdZ5srOzOfLIIwE4/PDDOeOMMxARjjzySDZt2gTAJ598wvTp05k4cSJgDc3dsmULQ4YMqXO8E088kQkTJpCbm8sll1zCwIEDG9QwatQoAI488kgOP/xwevXqBcCAAQPYunWrGgRFaUW0WYMQT4K1b2MM48aN47rrrquTZ+HChcyaNYtx48Zx1llncddddzX5PMnJyVXvHQ5H1WeHw4HP56vS8M477zBo0KAGj/erX/2K448/npkzZzJy5Eiee+45Dj300Br9ILXnEYSes7aeoAZFUVoH2qkcQ0aOHMkLL7xAcXExANu2bWPXrl3k5eWRmprKb37zG2655RZ+/PHHiMfIyMhg//79B6ThiSeewBgDwKJFiyLm3bBhAwMGDGDMmDGMGjWKnJwcevTowa5duygoKKCiooIZM2Y0W4uixAKd3hI9tIUQQ8466yxWrlzJiSeeCEB6ejqvvvoq69at49Zbb8XhcOB2u5k0aVLEY1x77bWcc8459OrVizlz5jRZw5133slf/vIXhg4dijGGrKysiIX6m2++yauvvorb7aZnz57cdddduN1u7rrrLo4//niys7MZPHhwkzUoitI6kGDNsbUxbNgwU3uBnJUrV4b1jSuJg94jJVo89/UG7pu5kqtPyebO8w+Lt5xWg4gsNMYMC7dNXUaKoigKoC6jhOHiiy9m48aNNdIeeughRo4cGfVzffzxx9x222010rKzs3nvvfeifi5FUVoPahAShJYsjEeOHBkTQ6MoSutGXUaKorRKWmn3Z0KjBkFRFEUB1CAoiqIoNmoQFEVp1ei8tOihBiHBScT1EO666y4+++yzuGpQFCX6qEGIIW11PYR7772XM888M64aFEWJPm132OnssbBjaXSP2fNIOOfBerO05vUQXnrpJd5//338fj/Lli3j5ptvprKykilTppCcnMysWbPo0qULV111Feeffz4///nPycrK4sorr+TDDz/E6/Xy1ltvaXgLRWmlaAshBqxevZorrriChx56iG3btjF//nwWL17MwoULmTt3Lh999BG9e/dmyZIlLFu2jLPPPjvsccaMGUPv3r2ZM2dO2DhG69at46abbiInJ4dVq1ZVrYcwceJE7r//foCq9RB++OEH5syZw6233kpJSUlE7cuWLeP1119n/vz53HHHHaSmprJo0SJOPPFEXnnllbD7ZGZm8uOPP/KnP/2pKsy2oiitj7bbQmigJh9LWut6CAAjRowgIyODjIwMOnbsyAUXXABY6x3k5OSE3eeSSy4B4Nhjj+Xdd99t1ndRFCX+tF2DEEda63oIjT1mpH2cTqeugaC0GAadmRZtGnQZichBIjJHRFaKyHIRuclO7yIin4rIWvu1c8g+40RknYisFpGRIenHishSe9vjIlYkcxFJFpE37fTvRSQrBt+1xWlt6yEoitK+aUwLwQfcbIz5UUQygIUi8ilwFfC5MeZBERkLjAVuE5HDgNHA4UBv4DMROdQY4wcmAdcC3wGzgLOB2cDVwF5jzCEiMhp4CKjby9rKaG3rISiK0r5p8noIIvIB8KT9d7oxZruI9AK+NMYMEpFxAMaYB+z8HwPjgU3AHGPMYDv9cnv/64J5jDHfiogL2AF0M/WI0/UQWid6j5RoMXnueu6ftYprTs3mjvN0PYTGErX1EGxXzjHA90APY8x2APu1u52tD7A1ZLdcO62P/b52eo19jDE+oAjQ1dkVRVFakEZ3KotIOvAO8BdjzD6JvJBpuA2mnvT69qmt4VoslxP9+vVrSHKrQtdDUBQl3jTKIIiIG8sYvGaMCY4r3CkivUJcRrvs9FzgoJDd+wJ5dnrfMOmh++TaLqOOwJ7aOowxk4HJYLmMGqO9taDrIShN4dR/fUFmejLvXX9yvKUobYjGjDIS4HlgpTHmkZBN04Er7fdXAh+EpI+2Rw5lAwOB+bZbab+InGAf84pa+wSP9XPgi/r6DxSlvbN1TxmLthTGW4bSxmhMC+Fk4LfAUhFZbKfdDjwITBORq4EtwC8AjDHLRWQasAJrhNIN9ggjgD8BLwEpWKOLZtvpzwNTRGQdVstg9IF9LUVRFKWpNGgQjDHziBxh9owI+0wAJoRJXwAcESa9HNugKIqiNAb1IUQfjWWkKIqiAGoQEp5EXA9BUZS2iRqEGNJW10NQlESiniHwShNps8HtHpr/EKv2rIrqMQd3Gcxtw2+rN097WA/h2WefZfLkyVRWVnLIIYcwZcoUUlNTufDCC7n00ku54ooreOaZZ5g7dy6vvfZaVK69okRCByRGD20hxIC2vh7CJZdcwg8//MCSJUsYMmQIzz//PACTJ0/m3nvv5euvv+bhhx/miSeeONBLqShKC9JmWwgN1eRjSVtfD2HZsmX84x//oLCwkOLi4qpJbj169ODee+9lxIgRvPfee3Tp0qVZ30tRmoK6jKJHmzUI8aStr4dw1VVX8f7773PUUUfx0ksv8eWXX1bts3TpUrp27UpeXh6KorQu1GUUQ9rqegj79++nV69eeL3eGn0E8+fPZ/bs2SxatIiJEyfWic2kKEpioy2EGNJW10P45z//yfHHH0///v058sgj2b9/PxUVFVxzzTW8+OKL9O7dm4cffpjf//73fPHFF9qkV2KCdiVHnyavh5Ao6HoIrRO9R9Eha+xMADY9eF6clcSP/361ngdnr+La0wZw+7n6TDWWqK2HoCiKorRd1GWUIOh6CIqixBs1CAmCroegKE1De6aij7qMFEVplbTO3s/ERg2CoiiKAqhBUBRFUWzUICiK0qrRvoTooQYhwdH1EBRFaSnUIMQQXQ9BUZTWRJsddrrj/vupWBnd9RCShwym5+2315unNa+HsGnTJn77299Whcd+8sknOemkk7jsssu48sorOffccwEruN0FF1zAOeecw1VXXcWqVasYMmQImzZt4qmnnmLYsLCTIBUlqrTSIAsJTZs1CPFk9erVvPjii1x00UW8/fbbzJ8/H2MMo0aNYu7cueTn59O7d29mzrTCDxQVFYU9zpgxY3jkkUeYM2cOmZmZdbavW7eOt956i8mTJ3PcccdVrYcwffp07r//ft5///2q9RBeeOEFCgsLGT58OGeeeWZVRNZQunfvzqefforH42Ht2rVcfvnlLFiwgNGjR/Pmm29y7rnnUllZyeeff86kSZN46qmn6Ny5Mzk5OSxbtoyjjz46qtdRUZSWpc0ahIZq8rGkta6H4PV6ufHGG1m8eDFOp5M1a9YAcM455zBmzBgqKir46KOPOO2000hJSWHevHncdNNNABxxxBEMHTq0Wd9DUZqDxkyMPm3WIMST1roewqOPPkqPHj1YsmQJgUAAj8cDgMfj4fTTT+fjjz/mzTff5PLLL686tqLEC338oo92KseQ1rYeQlFR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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 打印出5月1日这一天的各种响应时间\n",
    "df['2019-5-1'][['res_time_sum','res_time_min','res_time_max','res_time_avg']].plot()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 215,
   "metadata": {},
   "outputs": [
    {
     "ename": "AttributeError",
     "evalue": "'list' object has no attribute 'plot'",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mAttributeError\u001b[0m                            Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-215-e4c6428e4d6e>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m      1\u001b[0m \u001b[1;31m# 把这一天的数据按照20分钟一次重新采样\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      2\u001b[0m \u001b[0mdata\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mdf\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'2019-5-1'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mresample\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'20T'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmean\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 3\u001b[1;33m \u001b[0mdata\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'res_time_sum'\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;34m'res_time_min'\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;34m'res_time_max'\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;34m'res_time_avg'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m      4\u001b[0m \u001b[0mplt\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mshow\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mAttributeError\u001b[0m: 'list' object has no attribute 'plot'"
     ]
    }
   ],
   "source": [
    "# 把这一天的数据按照20分钟一次重新采样\n",
    "data = df['2019-5-1'].resample('20T').mean()\n",
    "data = [['res_time_sum','res_time_min','res_time_max','res_time_avg']].plot()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 216,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAENCAYAAADgwHn9AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/d3fzzAAAACXBIWXMAAAsTAAALEwEAmpwYAAA210lEQVR4nO2dd5gcxfGw31IChIQCEiBEEAgEiCAJZAwmmmATTAbbJGMbG7AxwZ+NfxiDiTaYaJOzwQSRswABIkqgcEI5C+V8yuEkXarvj5k77d3t7m2YmZ7drfd59tndSdXd09PVoaZKVBXDMAzDAGjhOgGGYRhGfDClYBiGYdRjSsEwDMOox5SCYRiGUY8pBcMwDKOeVq4TkA9dunTRHj16uE6GYRhGQTFq1Khlqto12b6CVgo9evSgrKzMdTIMwzAKChGZk2qfTR8ZhmEY9ZhSMAzDMOoxpWAYhmHUY0rBMAzDqCdypSAiW4rICBEZKyITReRmf3tnEflYRKb7352iTpthGEap42KksAk4RlX7AH2BE0TkEOBaYLCq7gkM9v8bhmEYERK5UlCPdf7f1v5HgdOAZ/3tzwKnR502w2iOV0bOY+GqDa6TYRih4WRNQURaisgYYCnwsaoOB7ZX1UUA/vd2Kc69RETKRKSsvLw8sjQbxtqNVfzl9XFc8ORw10kxjNBwohRUtUZV+wI7AQeLyH5ZnPu4qvZX1f5duyZ9Ic8wQqG21vtetm6T24QYRog4tT5S1VXA58AJwBIR6Qbgfy91lzLDMIzSxIX1UVcR6ej/3go4DpgCvANc5B92EfB21GkzDMModVz4PuoGPCsiLfGU0iuq+p6IfAO8IiIXA3OBcxykzTAMo6SJXCmo6jigX5Lty4Fjo06PUVxU1dTy+dRyju+9veukGEZBYm80G0XFPR9N47f/K2PojGWuk2IYBYkpBaOomLeiAoCVFZWOU2IYhYkpBcMwDKMeUwqGYRhGPaYUDMMwjHpMKRhFhaKuk2AYBY0pBaMoESS0a5vaMYoZUwqGkSnh6RnDiA2mFAzDMIx6TCkYhmEY9ZhSMIoKtQl/w8gLUwpGUSI2/2+EQE2tUlFZ7ToZoWJKwTAMI0NufGcCvf8+iOqaWtdJCQ1TCkZRYdNHRpi8MnI+ADVFXNFMKRhFic0eGUZumFIwigp7o9kw8sOUglGU2EKzYeSGKQXDMAyjHlMKRsGzsaqGHtcO5IHB0xk0cYnr5BhFyjNDZ1Hp0Oro359Mo8e1A0OXY0rBKHhWrPeirN3z8TTHKTGKmfs/neFU/r8/mR6JHFMKhmEYRj2mFIwixVaaDSMXIlcKIrKziHwmIpNFZKKIXOVvv0lEFojIGP9zUtRpMwzDSIUW8QtribRyILMa+JOqfisi7YFRIvKxv+8+Vb3bQZoMwzAMHCgFVV0ELPJ/rxWRyUD3qNNhGNnywOBoFvoMwyVO1xREpAfQDxjub/qDiIwTkadFpFOKcy4RkTIRKSsvL48qqUaMiepFtSeHzIpGkGE4xJlSEJF2wOvA1aq6BngE6An0xRtJ3JPsPFV9XFX7q2r/rl27RpVco8CwN5qNoCmNFQVHSkFEWuMphBdU9Q0AVV2iqjWqWgs8ARzsIm1GcWA6wTByw4X1kQBPAZNV9d6E7d0SDjsDmBB12gzDMEodF9ZHhwEXAuNFZIy/7TrgXBHpizdKmw1c6iBthmEYJU3kIwVVHaKqoqoHqGpf//O+ql6oqvv720/1rZRiz8r1lVzz6lg2VNa4TkoD5i6v4Pq3xlNTWyozoQ2Zsnit6yQYRUaYU5JfTS/nsS++C1FC5tgbzXly90dTeXXUfF4bNc91UhpwxUujeX7YXMbOX+U6KaEjSR7Xe8P0g1SaerbkCfO2X/jUCG7/YEqIEjLHlEJQxNTcJZ6pMgwjrphSyBPrNBqGUUyYUggI65EbhlEMmFIwDMPIgBLxh2dKIV/qKsr8lRvcJiRGzF1ewYvD57pORtGwsaqGBz+dTlWKqF/Pfj2bo+76jE8mlUbUuTdHz2faktKwLluyZiPPDI3WvYophTzZVOWZoj4aE3Oyxrjo3Jzz2Ndc9+Z4NlVHY6YbxRr//JUV4QtJwWNfzOTuj6bx/LA5Sfff+M5E5iyv4Df/K4s4ZW7448tj+dF9X7pORiT85tkybnp3EvNWRFf/TCnkSVxHlC7XOFaur3IoPRxcvu9RUVUNwMYqd/GBDTes3uA9S7URzl2ZUsiTUgm8UerYbTZcPutRijalYBiGEVNcvP5kSsEwDMOox5RCntisgntSDa3XbaoORd7aRtedsXQt4+ev5t2xC0vK19Sqiko+m7LUmfyvv1vG4tUbI5Pn8tZGKdqUglHwvDl6QdLt//f6uMBkNH4oR81ZUf/7uHu/5JQHh3DFgNE8NWRmYDLjzqXPjeJXz4xk5fpKJ/LPe2I4J9//VWTywupkpMOFwYgphSKnFBZIl6/blHR7mGZ8azYmbyCWrkmeliDQmI1LZy5bD5Dy/YkoWO5IIRUzphSM0CgFhRQFybzAGqVFlJZPphSKHCfOW60NC5S4jRAaE+/UFTbi4AE2pZAn1ht2T6rnJsh7E4f3UeI2YohXaoobW2guAjZW1fDNd8tZsKr0fCJVVkc7x+yiNxUlG/2ofsn8/azZWHxvj8eRhY2e4wkLVkcit65mJ1q1TQ/Z75MphZC46qXRnPvEMA6741PXSYkUl4uOkRJh1+3ZbzyfR8msrM54aGh0CSlhftDoOT7rkW8icUBYt5h/70ebIwkef9+XofoVM6WQJ6nahuGzVqTYU9wk9miKvAMfC74rX+86CSU7hTp7eXRlP77RyCTM92FMKRQ5pfrAQvwXaAsdU/ruCPO5jlwpiMjOIvKZiEwWkYkicpW/vbOIfCwi0/3vTlGnLRdSPReuG+NSemDjlNVSKnejOHExUqgG/qSq+wCHAJeLSG/gWmCwqu4JDPb/xx7ri8aXIK117D6nxkZk0RNmiUeuFFR1kap+6/9eC0wGugOnAc/6hz0LnB512nIh0VQxToustSE7aqmsrmV9M6/9RzZaSmWS6qCxqg643Jc1elt7dcVma6NVFe7e5lXVBF//0coNi3WbqmP1DCdSURmdiw2nawoi0gPoBwwHtlfVReApDmA7h0nLid/GKPLV2PnewlRYlfycR79m3xsHhXLtQiCVwvnv0NmByZiyeA39b/ukwbY+t3zEotUbGDRxMX1v+TgwWdny0sh59UF/7vpwSmRyB4yYF9q197txEL9+ZmTGx1dGqEBWVjQ0PQ5TOTpTCiLSDngduFpV12Rx3iUiUiYiZeXl5eElMAc+n7o5PXF42QmguiacdNQpHSM8pi9Zl3T7wlUbGT7TrXXbFwl1/f3xiyOT+/nUcL2yfjV9WcbHbirSSHhOlIKItMZTCC+o6hv+5iUi0s3f3w1IevdV9XFV7a+q/bt27RpNgo2SJyY6PjbYgnrx4sL6SICngMmqem/CrneAi/zfFwFvR502ozBJtaBsDXl4mFIo3jJo5UDmYcCFwHgRGeNvuw64A3hFRC4G5gLnOEhbYFh7ZIRHvGqXWR9FT5glHrlSUNUhpDYtPzbKtJQCxdqbSaQU8hg3EkdnpToii5uDwqCwN5rzpPHz0OPagUmP63HtwJT7cuW0h4ZyzD2fN9k+cvbmRcjznxweqMzGvDB8Tsp9e9/wIT2uHZjUkVuu9Lzufa4cMJphM5c3e+35K4N0Rph5yzd4cv4+ceatqOCKAaPzvk5oJLSHQZvhAtw1aErgz0s6Hvx0etbnhNEZ6XHtQMr853dmeXJDA4BrXh0bvHAfUwoFzNh5q5iZxPfNBxFagzyTgQnmsJnLA5NXU6u8M3YhA8ctavbadXb0UfNGivCg2TAu5tZdYfeRH/rsu5AlNOSBT2dEKi8dr5bNBxp27hozaGJ4zvhMKYRFiQypM8lm2NMLxTmIT42q+ymzYndXXsqYUsiXGDb+9rwaYWNVrHgxpWAYGRD1Ympzit314q6rjkcpdXhcLWSbUsiXEqqkyYjLm9tGaRCn6lasj74phXxJUUlrE2pvlFYUybjo6RFcGZElyxNfzoxEznPDUls9JTIioGBHx9/3ZYP/qnDFgNHc/O7EJscOHLeIeSsqApGbjHkrw7t2JvztzfG8PWZhg23NOUcMgtvem8RHEUQ7y5R7Pp7W/EEZcNVL8bIyM6UQElE6y2pM4x7MF9PKeWfswqTH5ktjnZjsQXE5mvj3J8E8uMl4d+zClA7w3h6TnwVSul5o4wY5al4YPrfJtiDNjlPx5JBZoctwQeP7WT9F5mgoYkohJOI0zC1m4mCJ44K45dmqe3C4bjtMKeRJHF/xj7TBiF/2DQe4bsiM4DClkCepHoa49eSKFZF4uhvIt5FMV3+sAS5uXLcdphSMvMjo5bXQU2G4x+5ysWBKIQ/eGbuQDyZE51IiFX98eQyzl212dzF+gRsXCQNGNF2ADAJV5aZ3JjJqTlNLotpaTesOIF82VNZwQRL/Ude/NSE0mc3xxTR3waWWNwoPWkdQo5fBk5fQ628f1P+/YsBoFqxK78Pq0NsHByPc56HPZvCD2wfztOOFbVcDBlMKeRCVmWdzvDl6AX95fVz9/2GOonL99Y3xoV37ma9nc9Yj3zTZvmj1RoYHZHaajA8mLGLIjKbRuBat3pj2vPzbyPhNiUH4PoIufrasgeXeu2MXcuu7k9Ke09y9yJa7Bk1l4eqN3PJeernFiikFIy+K/eU1d9krrHItrNQa6TClEBJF3laWDLnexnj2841CoK7tcOV00JSCETqmIIufMO9xFG2ja4ufOGFKwShowtY3uU6PFeuaQiqKfRqxlDClEBJhRKNKZENlTdLtExeGZ3lUWV3LvR9PY2PVZtmzl4fvhydde7NifWW4skO9eu48FaJlzIr1lTwweHp9Qz9vRQXH3P05M5amjgQ2et6qvOW+P35R3tcIg0z9bAXF1CVrefDT6YEGp8qGyGM0G8Hw4GcNwwfW9StPvn9IaDKfHzaH+wdnH7YwX0akMTl9bdT8cIXHVSuEyLWvj+OjSUs4qEcnftCzC794egSzlq3nuHu/4KJDd016zh0fTOGyo3rmJff3L3yb1/n5kK7jcUPE5sdj5q1iTABKNldspFCgbKhs6HAvirZrU3Wt/518lJKKfNNWXVN4LXOYbzSHTYU/Cq0r97Ub3YQ1NdxgSsEwjAbUKaTCU8VGEDhRCiLytIgsFZEJCdtuEpEFIjLG/5zkIm2FSqQdyxJqLXJ1eFgM1izJFo9dmEkWQ1kWEq5GCs8AJyTZfp+q9vU/70ecpoLCxYNiD2d0uCzquoZ/s0rYnJpitTKyur0ZJ0pBVb8E3PhiiIAla4J97T5uhGn5kgyX7slzbQPzbTtrcrRee33U/JzPraOufayqruXej6ayLIW/o6hYti5cC7N0NGfIUIxKMm5rCn8QkXH+9FKnZAeIyCUiUiYiZeXl7hyDpePUB8OzAKrDZV3M1tzW5YMzs3x98welwVXKnx6am+L906tjeT5PE8q6XvNDn3/H/SH7OsqEoEKq5sKfXx2bdv+gie4dYgZNnJTCI0BPoC+wCLgn2UGq+riq9lfV/l27do0weZmzZI3bnpWxmQ1V2VlKNcaVPsund7w8z3c36kYK5UlGvMXXL86P1RuKzzIrNkpBVZeoao2q1gJPAAe7TlOcaTwHanOi8SLfKS+XoytXPneMeBAbpSAi3RL+ngG4c1hfgBTh1GYsiGO41agoJeXgau0ojjh5o1lEBgBHA11EZD5wI3C0iPTFG6HOBi51kTYjNaXTRORPviFC82qQ82yp7D6XNk6Ugqqem2TzU5EnpIAZPXdlg/9TFq9NGpksCt4du5Bttmqdcv9X05fxmyN2jzBF7lmT51vArqaP5q2oYOlab01s4er0Ec+KBVWtf1s/W94bt4izD9qJVi2jn3RZVVFJx7ZtAr9ubKaPjMz5+rtlfDt3VYNtqzdUJY1MFgVXDBjNRU+PSLn/i2nlrNtUHWGKgiPXtjlqs90G5DHKOOLOz+rDucZpamRxwNHVEsnHWmvIjGXc+/G0AFOTOac+ODSU65pSKEAWrnLzHkQ+MxpVOfbEXBOjdjFz4tSaB8S6TeFZ+aTz/poJkxetCSgl2TF3RTgeik0pFCCuphaKsK1pnpLMdGqsOIofUwqGYRQA4S1/l5KVVSaYUihAXHXWXD07+fRO802zu7K2hqohNkSJipJVCivWV1JVU3jz3JXVtUxZtDZyuarKpIVu5k7zYX2eC9yuYjnE1adOukh3+fpcSkfj+CGNiWt5NcfKkCMH5kJJKoXaWuXAWz9u1q9JGGzM0+1Cr+s/yNkvTj5c+two3hqzMHK5+VKVZ6N+y3uTcj7XZfSssBiYJmTm3R9NDU3uKc34E3t55LzQZDfH4jzc2vS79eMAUxIMJakU6pqJd8dG38htqiq80QnAR5OWuE5CwTFtSfQjOpd84rCOfOMonjFA+dri8opcmkqhQIeahhFn7KkqDkpSKdRhi3lGXCnEummdreKgJJWCVV0j7lgDGx3569/CU+DpKEmlUEdx3UqjmDCVkB32LAdHSSoFp50wq71Z84s0fpUywZnfpTzqWW0elfSZr2fnLjgPXD5W+VjGzV+Zn+O/XMOVPvjp9LzkhkVJKgWjtFjuOMZwLlRV597ErtlYmM4HXTHBdwAYNXd/5MaRXnOYUjCMGNLCRpSRYUXdkJJWCk4MPGyy2MiAQrQ+KtS6XZBlHSIlqRRKOcSiYRgNMZ3QkJJUCnXkGzIxR6FGxDi5zyVIoXa1TCk0pCSVQhDWR7OXrc/pvLEO/eHMCykoRyYsX194i735MslR8BVXzMrxmXCNdRoaUpJKoZ486sJ743IzgQvTaVhzvDRyrjPZI2atbP6gIuPF4e7K28gcGyk0pLSVggPysT/PF+sRRYutXRUG9lQ0xJRCjuTattc6dJJaqj2iUs23YeSCE6UgIk+LyFIRmZCwrbOIfCwi0/3vTmHJd/lGs/UdSwdzX1QYmElqQ1yNFJ4BTmi07VpgsKruCQz2/4eKk9cUnE4fuaMUn7t87rQ5xIuOEqyaaXGiFFT1S2BFo82nAc/6v58FTg9NfgD99XdyDNAzZbG7wCsPff6dM9nj5ufmSmDBqvz80gBc81r0EfbAC0+Za4jKhauLK3BLFKzZWJX1OZuqa5hZoFZTYRGnNYXtVXURgP+9XbKDROQSESkTkbLy8vK8BObTe52+dF1esl0QZgzd5hgwIjdLnHsG5W+tNWxm4/5HdCxZY417VLw9ekHW55TNLj2ruOaIk1LICFV9XFX7q2r/rl275niNgBNlhIbdKiNTWpjDqECIk1JYIiLdAPzvpWELNBNNwygeWuWgFKyD2JQ4KYV3gIv83xcBb4clyOpB4WALrkamtChFa4YQcGWSOgD4BthLROaLyMXAHcDxIjIdON7/b5Q4phKMTGlp00eB0MqFUFU9N8WuYyOSn9f5a3Owckjk9g8m838/3tvmQDPABgpGpqxYX5n1ORuqakJISWETp+mjyMl1tHlPnhGTHvtiJiNnu7OIMeJNdY3D194LmNsGTs76nMe+cGemHVdKUink2/ncVJ3/Q1tjXeCMKPRSsmnueGMjhaaUpFKow+kbvmb5lBGFvtBc4Mkvely+uxNXSlIp2INaOJTirSrFPLui2pRCE0pSKcQBm1YoDew+x5taUwpNKE2l4NeD9ZU1ObkhcPWgF/pUyui5ObgUKOws5+RGoZBv84QFufm4evDT6QGnJDNsba8ppakUEvjZY984kZuLXnl//OLA0xElZzz8teskRM4VA0a7TkKk/OSBIVmfs6m6hrvztOjLFVtTaEpJKoVEL6nzVubvhTMqcvECWeiUYvSyUsuz0/gmpVXUGVGSSiGRXKZkCrkiFdocaiGXtWEUIiWpFBIbmkJqc4JoIAttDrXAkhsIpZbnUstv3ClJpZBILhUyiIVmVyEAbQ41cwp9Yd8wcqEklUK+j/rsAo7UNGXxWpauzc7iyuWUk8v59TUbqyOXuaGyhn9/4sYSpxRxpfgXrY7vWmZJKoV8+fq75Xlfw5VZ6+kPDeUHt3+a1TnPDZsTUmqax2Vn/Vf/HRG5zL+8Po5HA/DHM3TGsgBSU/y4ql6HZvkMRklJKoU4TAu4fKcp27c4ZzkcGbm8U9/OXRW5zEkLk9v5//qw3bK6ziKL8WzkSEkqBcOIK61bJn8kU2xOSRw6PkZhUpJKIQ6PSy7TR67m1126aii1ti1VoJhsy6HUyi1XrJyaUpJKwSgkSuupTRVnONu1/kIzPXZFqb0omAklqRTi8Lxsqso+JoOrdLt08z17eYUz2UFRUZm5FVOrbOeJUlDrsJJXZRkkqBga5kJ7KTQdJakU4sAvnxmZ9Tl3fjglhJQ0j8uHdsbSdYFc59WyeYFcJxdO+s9XGR+bavqof49OWcnMpZFaHNDi9I3vTAzkOrngKmrdI0UUwa0klUKHrVq7TgKVOURvc2E3XywMm+ku/Gk2o51UY7KT9u+WlcxcOq7lazdlf1ISPpm0JKvjgxyJhj1t1rqlcOUxezTZXkwmwCWpFNq0Ksls54xFiSs8cpk+CsqgIFvJLkei2RZT945b0XnrNnlfJ85Y62iUBIUS7CaodJo7k8zIpZRcuaiJilauE9AYEZkNrAVqgGpV7e82RUaRPwOxIqhRmbmjzoxCSmtUxE4p+PxQVYtnks4wIsatSWpxt7TF/mKgTR9BTiE5S4mnhsxynYS8eW3U/KyO/9rRwmG6Udm+O26T8XXu+CA7SzVVzSlqmkuSze3vdf2Hocrcp1vm96BQiaNSUOAjERklIpc03ikil4hImYiUlZeXByLQpW+fYuTMft1dJ4H2W+Q3CP58Wm516/ELD8pLbjql8NIlh+R17XQEuQQRRUf6vSsO56M/HhnAlTJP7L47bsM9P+1DiyRmw1Eslj9+4UG8fflhocuJo1I4TFUPBE4ELheRBndeVR9X1f6q2r9r166BCAyzEqd6Q7WYueSo3V0ngZ8fvHNe56d6X6A5frTvDnnJTbem0H5L96bUYZDL87df9w50abdF8IlJw49670DbNq2crUPs020b+uzckbZtWoYqJ3ZKQVUX+t9LgTeBg92myChE8u35tnS0uu5qUT/IefJCmnEPKttRKIq6uhG2rFgpBRHZWkTa1/0GfgRMcJsqoxDJ181DsimCYibIdqZYF2LTKexiynHcrI+2B9707YBbAS+qargrR4Q7H2jmnG7It11yNe1XpO1pWorCTirCTITt1ypWIwVVnamqffzPvqr6jyjknvfE8IytTf786tisrp1ubnrkbHeuF76aHswifTK2aJV6znP9psxddeTT49x6i/zmXe/9eFpe5+dKkB2UDycszlxugO3MyoqqjI+ds3w9+904KDjhWbJifWXGx26zZeo+9IjZKxg1J9znuS7WxtZ5GlE0R6yUgksyNbvM1rRxu/ZbcvIByf3WPPP17IyvE/SQ/LEvZgZ6vUR267I1vz5sN/rt0rHJvrkrMvcDlG2Wu7TbghtP6c1rlx3KqX3CsYByMfK75bR963/f97M+AOy6bVsADtylIyftvwP/PGP/Juf9+5PMFVuuyujYvbfL6bw6Ppm8NK/zo+SCQ3ZNu/+5b8ILW3vn2Qew/TZbAnD0XsEY2KTClEKA9N25Y5NtitK2df7WArnqhL13aJ+37Fz4+ym9+cWhTR+ibIa+2Q6Ty64/jl8dthv9e3TO6rxseOfyw0O7NiS/z6clKLgz+u3E7DtO5g8/9Jyy7dalHQ+ffxCH7N40z2G7Yzhp/x344/G98rpGywKaXq1za56qgxZmef+0f37WdNlgSiFkArNuCOYyCddzM5ObTXnkY0Fkvn+yiwOeSz0Nom7navobR4pl/dCUQoAkqxTpHpwiqUMpSZb3bHr/+SiusBbjwlammSY7k8MKoZEqJudykXkTLiWTVCM1xWLml00PPp8sh6YUQr4NyZROOkVU16Yma1zDbm9tpNCQqLISdktgSsFn9YbmLSaas5xp3aJpcW7RqkXK+A1fTc/cv87UJWszPjaRVA/d0BnLefKr5hebswklmYnsTBvr1RuqOPvRr3OWnYyzH/m6WYOCTdU19Lh2YMr9LUJsaacvWZtzMKBkt7liU03G5+fSwLduJi7JNa+O5eNmAu64ekkQ4PIXvw30ehMWrgn0eqloHfJCjCkFn7I5K5s95osU/nD22K4dAMf1bmiJcdL+O/DfX32Pv5/SO+l5mSiiOn7+2LCMj03kZ99LvUB128DJzZ7/9YzlKff12alD2nOTRQvLdKDw/vhFTFiQ+iFr06oFu3fdOuX+/bs3TVvZnJXc+t6ktHInLFidct8NP+nNft2bOkQ7//u7cOtp+/Lm73+Q9trNkcn9SMUunds22TYzC59euUyL3Xzqvmn3vzpqPr/9X1naY3LRCbefudnSaq/tczekGDhuUcbHvnLpofW/U5XU5EX5KYW7z+mTdPudZx3Q4P/fTupN2zYtG6QpSEwpZEGqgOSH79EFgJaNRgpXHrsnu267NVu0asnw644NPD1H9vJM007ts2OTfT/tvxPgjVRm33FyzjLSPbSplF0drZMEoc80dnBzQ/EbftKbT/90dMq8iQhtkshvjnRz3Gf2646IMPuOkzlun+3rt//jjP258NAe9NvFi6PcnLLMOk0ZzFWLCA+dd2CgcpsjmZfSbMll+ujcg3ep/921ffD+j3br4nU2Dt5ts0VX4u+wOPugnZpse+7ig/lpo45dh7atmXTLCaGlyZRCFlTVpG/Q0lXvvAd8SRexU6cnrksQmfr5b64hzKQ8c+n9Zn6f0pR91lJ92VmZC+UoJNXlHNWXfKfjwpx9isNqh4tQuKYUsqA6xUghI8KsvGmuHW6lyv7amTY+rqaag1gzCNsNQSJBFZOrPkQcjY/qkpQqbVEqUBfr8KYUsqDKoe17urqRrJIGldKgH9pMG8zmTBUzSVcuD2+mSiHdtXNtNLIbKARbF11Zt+VrfRSKSWucFJUphXgwcvYK7v1oahPzyXxGCql67OksmlSVV8vmMWDEXNZszNEKKMdKVVurDBgxl5dHzsvtAim48KkRTFyYejG3jue+mR2o3ETS3ccg2phk7eum6uYtgaYuzt7CrLn0ZrKGM2rOCg689eOsZafj86mZua/IxhdWMpJlf0Nl82WdzqBg87WzrwxDmrEo3FRd06yxQ75pyBdTCj5H7OktFq9YX8nvnh/F/Z/O4L5GTtEqUlS2S4/anYN7dOaMft3rrSGO2LMLPbu2qz9m2xSLco98/l3S7RWV1Vz98hiueW0c/0hhlZIY0KXxIuNVx+7Jwbt15oT9sg/6Mm9FBec9OYy/vjGeQRNTmxQmWuLULa7+/uiezV7/5PubD/s4dn7Th/avJ+7Nrtu25YCdOvCT/Zsurjfm5UuTRypbn8ZUM1Uju1uXremw1eYgN9edvA+QfHEwGa9koFwXrm4aFva4fbajfRpHbIkk84kzfFbzJq63vDsp6XrZ93p04og9u3Dn2QckOSs9v/zvyPrf6UYhdw1K7Z/phH134KT9d+CEfXfgx/t6C/u9G4XDPDdJMKVMfIqlCj3abotW7NTJs+Q6y7+3fz1x7wbHnHlgdw5O4UrlgqeGp5X7+qgFSc2i7z+3X9Ljk/kPC5u4uc52RrcOnrOpG96awOoNVRy793Y8+NkM9uu+DSfs55lWVlY37WG226IV3TpsxSuXeeZhg1KECGzRQhjz9+Ppe0vDHtn6JO8BzFi6jt89P4oZ5ev4Xo9OjJzd1Fx29h0n89boBYDXkJ18QDc2VvXhT6+O5cx+3dm5c9usTdZUlRdHzOWfAycjIuy1ffu070ckekN9+w/h+gTaYZstufSonlx6VPNKp46+O3dKun3tpio6tE0exSxV+/XZn49u8L9n13YpLZ+SXSJXtxtPXvS95DKSXC6Z98zmpuvGz1+dVAEDvHrZZhPbBSs38J/B0+v/19nKZzLrtKGqhrZtkjc1lY1GUNNuOzHpez3PD5vDoIlL6NPIv1jnrZtaH9XU5j6in3Dzj/n1M55C69S2ddJ73LFtG1657FB++d8RfD41O2/Dye5H2fXHpYwit2UAftOyxUYKPqrw7tiFDBy/iKuP68XDFxxI35078v9eGcs0v2FMZpKazVxssqHgxqqGD8XAcYs47cEhLF9fyXO//j7XNuqlpEp7vixYtYELnxrB396cQL9dOjHoj0dyuD96igNBTh2vTTMVF8QicZTz881NLzSXn+eHhefZs4507+M0XhNIdZ+z2R5V8eciJ9kaSpyWMMCUQj1L127ihrcn0Gfnjlx65O5s0aolj15wEG3btOLS50axekNVyvcUMibJ3a+b/6yqqeWWdydx+YvfstcO7Rl45eEcvmcXeuXwck42dVVVeXnkXH5835d8O3cl/zhjP567+GC6d9yKLZp5YzVKgnxw1qWZxw7CkV4UjVKmItJlZ/WGKt4euyCjxd7GjW82eUynFOLoviXMNLl8gztT4vPUO+aLaeVsqKzhnnP61LvI3aHDljxywYHMW1HB1S+NZmNVnkohCRuqali0egM/f3wYTw+dxa8O68FLlxxKtw5bAV6w9sS57GRs9n+Tvfxf/nck//f6ePbv3oFBVx/J+d/ftb73li5YTiGQ6uFel3akEIDcpP6LwqHZheY0Ddwb385nY1Vt/Xx9WKzOIuhOtlU42fFBtbvNXScXOYUQ5tXWFBK45sd71busqON7PTpz4ym9ueHtiUnPyeZhT1aJBk1cQtnslWysquHB8/rxkwOaLqDusV07RmXghiMXRsxawc2n7suFh+zapMJu0Tq8PsM/38/OpUMupoep7s0Lw+fwzczk7jsWJ1nszVpuEsEvDJ/LogCunS2PffEd33yXPK8Dxy2iz84d6bNTR94fn3mUtmx5eugsBk9Jbo3U2KouCOX5xugFuVvrBUC6uj1m7qroEpIjJasUbj19P254a0L9/8P36MKvDtst6bEXHLIrs5ZV8MzXs5r0JLOxzEgVbGfHjltx38/6NlFIdZzed8ekSuHQntsC1Aez+UHPLvXpbcwVx+zBA5/OaLL9g6uOoEeX5D6E9t6hPe23bNVgDn7rNi3Za4f29N7RswK5/Ic901oo3XhKb25+t6kJXrZRqv5ywl4p91117J68PWZBk+2p4iwPnbGcoWl8OjWmLspZpvzpR7247PmGztZmLF3HgpUbsrpOOupcnCS6fEjGiFkrGDsv+UJyyxbCDT/ZJ6PFzJ8csCP//mQ6O3bYkoWrN3KzHw1uN9//1G2n78f1Cc9TIl9OWwZk5vwx1fTK0Xt5fsUaWxv1ShJEamb5ep5blf1aSZ013W+P3J3PppbTZ6eOaY+/+rheSRea09XtyiRT0NskzAT88bhevP7tfETgrAMzs2wLGonjnF6m9O/fX8vK0jvcMgzDMBoiIqNUtX+yfbamYBiGYdQTO6UgIieIyFQRmSEi17pOj2EYRikRK6UgIi2Bh4ATgd7AuSKS3j+zYRiGERixUgrAwcAMVZ2pqpXAS8BpjtNkGIZRMsRNKXQHEp3EzPe31SMil4hImYiUlZdn94q5YRiGkZ64KYVk9mgNzKNU9XFV7a+q/bt2beoAzDAMw8iduCmF+UCiIfJOwEJHaTEMwyg5YvWegoi0AqYBxwILgJHAeaqa9HViESkH8vHo1YVM36oJFldyXcouNbkuZVueS0N2PnJ3VdWkUy2xeqNZVatF5A/AIKAl8HQqheAfn9f8kYiUpXqBI0xcyXUpu9TkupRteS4N2WHJjZVSAFDV94H3XafDMAyjFInbmoJhGIbhkFJXCo+XmFyXsktNrkvZlufSkB2K3FgtNBuGYRhuKfWRgmEYhpGAKQXDMAyjHlMKRtEguYRnK2BEJH2cVsPIgaJWCr7X1cgbCxHpKSJbRSkzQfYBIpI8hFu4cs8UkW0dyBUR+aOI7KQRLpD5cv8hIkdHJbOR7JuAq+v+Ryj3ZBHZLgp5jWTvKSJbRi3Xl723iGQXfi8YuU7ar6JUCiLySxEZDVwVsdzzRWQicBfwuv+GdpSyxwE3Ay+LSJsIZd8IPAH8LCqZvtxfAJ8B/YA1ETaO/YARwD7A3Ch77CJyAV6efwFcABCFMhSR04HJwB+Ap0Rk37Bl+nJPE5HvgFuAJ0WkcxRyfdkniMhi4F94z1SXiOQ6ab/qKDqlICJ7A78H3gOOFJHdVVVFJNS8ishpwKXAxap6JtAW+K2/L2zZJ/qyf6eqZwA9gVP8faE1lAn5qgCeBfYWkYMa7QtL9mHAM8CfVfUXqrqmrnEMK88J190b+J+qnqmqM4GaMOQlyhWRViJyMV6d+ouq7g4siKJx9keAvwZ+paonAq3x4p2EXb86A7/Bc3VzLrAU+JuI9ApLZoLsLYAzgAtU9TQ8H2xXi0jfkOU6ab8SKQqlICL10btVdQpeL+o+YBJezwZVbRoxO0C5wFjgIlUd5v+/Hzg9ItmfqOqRqjpURDoAM/1jJOheZKOyrstXS2AdnkPDUxrtC0v2UDzfWPv4+64VkVNEpF1YeU647olAlb/vfuDvIvK9MEYMItJePaqB11T1KFUdISL7AGtJ7lk4ELkJfyuBdsAO/v9aoJuIdAtZLnj5q6tLLwFnASeFMRKum64BUNVNQC+gbkr0Lrz28hhfYYQldwreCDD09isVBa8UxAvZOVpE/iUiv/Q3T1XVFcCbQE8ROdI/NrD8Jsi9U0TOV9XZwNyEQ3YHvg5KXhrZv1DVKhFpISLb47kIWYX38Nzl9zyClvsvEbnI39Ya2AZ4EfgAr7G4T0ROCEpuEtkX+5t/DzwrImOAjsAVhJvnX/ub3wBOFJFXgUUJaTk/KLmNZN8pIhep6moRaekr+8lAD6Cvf2xYdfsCVV0LPA+cJyJL8er5AcCtwHEhyT3Pf4bHAxeJSCegP1CGp5y6p7lULrJvwVPuXf3/LfDajz1FpI2qzgC+BXYE9gpLLoCqTgu7/UqLqhbsBzgG+BLYDfgh3gN6QML+dniLcS8kbGsZplygtf99N3Chgzx39L87A+8AJ4Uot6+/7594UfPOAxbjebrdLeQ8H+jvuxzo7//uCrwF/DhEufsCu+I1ku/7x20BXIbXSG4R9n0GWvnfVwKPRlC/9vf3nQHc5/9uj9d7vixEub38sr4XGAi84Jf/50CPgORuAfwVz9vym8CPEvad5sv+sf+/C56zzr4hy617qTiU9qu5T6GPFFoDo1V1lqp+BvwHuD1h/3rgNWCdiNwqInfi9a5Ck6uqVf4x+wNfiUgvEblJgrPMSSb7jrqdqrrK/16BNwfbKUS5//RHCq3x1hSuxlMQ7wFHBSQ3pWwAVX1IVcv83+XACjyFGIbc+325C4APge39Od9NQAegyv8dhuzEOlbtH7MJWO2vOQT1LCeTe6e/bwVQIyKd1Bs9CN7aWRhyHwDuUdU5qvr/8NbqzlfPa/J8grvHVXj1tTcwDPihiPT0930FLAGOF8+6bRneM7VHSHJ3gwbTlGG1X2kpdKXQFthWfFM1Vb0Db/riHP+/AhvxGujfAeWq+l3Ycv1K1RnPEuglYJmqLg9AbirZOyTIbikinUXkbryphZEhyt0Rr/F/E7hTVQ9W1fuBMcDsgOSmkr1dXZ7BW5QUkXvwpjXCyvPteD3XU1T1eeBt4EEReRjP8mp4QHKTyW5Qx3ym4C3+qgY355yqfp2CNwrcHm+K7h7geDwrrDDk/hPoLiI/8/8vFpGdReQhvKmjqUEI9cttmqquB17GC+zVX0S21M1TODXA8yLyOHAg3jRSGHIPrluvEJEWIbZfzSYu9h/gaKBrin3fAGcn/P858E3C/yf8T9sI5A7zf+8JLMcbXm8VZZ7xGsWP8Xp4W4cs93xgSJLjJOI874Y3rL8/gjyf26h+9QcuyUVuAHW7Jd7orFW2ZZ6l3POAr/zfPfE6OzdHUNaN8/s28Gguz3JzshOOuRR4GOjXaPvpwB+BdiHL7dNo+1Pk2H7l+olESM6JgxPw5hmfALZJ2C74c7d+xfkSf44R2AV4CGjv/98yQrkP+w9oV6BbxHl+GG8I3g7oEqHcB/F6eS0c3ec2wJZA54jl5qQEApKdcwORZ/3auu7YiPPbzv+fqzJIJ7uF/7ul/70N3tTVeXhWQGeFVNbNyT3b355TpzKvuhm1wAwKUvCmtc4F1gDnNN6f8Ht3//hbgCfxFh0/JIfFt4DkPlaCec5podPyXPx5LrCy7pjw/0pgJTCDLA01XMkN8uNEaLoCTfh9FF4vtJ///xy8ebc2/v+/AeXAEXiLfIfhLXZeUyhyLc+W52LNc4GV9SK8d08E78XEmcB1hSI36E9s4imIF5v5WLwV///hacyLgV/hWdCMx5uaWaKql/nHv6CqKxOu0VJVs3q71JVcy7PluVjzXMhl7S90t1RvATj2ckPBtVbyldIZeBYjPwT+izeP2AvPuuUONmvbbfEWcPsknNuS3Bc2nci1PFueizXPBVzWrQpNblgf5wnwC+YO4Nf+712Ba4An/f9bNjr2CeBo/3fOFcilXMuz5blY82xlHW2ew/hE+p6CSEPnWQn/Z+KtuqOqc4B3gfYicqqqbkw4/ga8Nxon+8dqnOW6lG15tjwXo1yXsl3mOUqifnmtgSvphEJ5DagQz9MoeAswn7PZE+MRIvIZ3pDsLFVdUiByXcq2PFuei1GuS9ku8xwZkSgFETlERF4AbhYvWEZd8Ii6Ql6J9+bg70REVHU1nr19XaCa2cDlqnqhqi4iQ1zJtTxbnos1z1bW0ebZBaErBRHZD++ljPfw/IZcgufaGt3sw2UrvDdSFwGPi8iOeIFTKv3j5qnqpEKQa3m2PBdrnq2so82zK6IYKRwCTFHVAXiLLBXA+SKyO4CI3IqnZbcH/oTngOpFPPfPdyS7YMzlupRtebY8F6Ncl7Jd5tkNGvDKNd5LG99P+N8Hb35tD///jXhzcDcDW+MVYM9G18jFT5ETuZZny3Ox5tnKOto8x+UTWAxh8SImPYvn/OktEZmunpfB7/A8KT4tIivwFmuex3MktkFVz/PPb6G+p0dVrYi7XMuz5blY82xlHW2eY0dQ2gUvaMQfgJOA24BLG+0/ADjN/90f+CBhXz7O1JzItTxbnos1z1bW0eY5bp+8Rgoi8gu8yEFjVXWViDyJF0+1C3C4iPRS1WkAqjoOGOefegwwzF+pV83SF7wruZZny3Ox5tnKOto8x5msfR+JiODFSH0RrwC/w5tbu0q9yESIyJ7ARcBGVb0t4dyDgHvwglZcolkEjHAl1/JseS7WPFtZR5vngkGzG2LV+f7uBTzv/26FZ7L1eqNjz8Dzwb4Hvk9wPN8fR2Uj06Vcy7PluVjzbGUdbZ4L6ZNpYbbCi037L7zV+VOAZxP2C56N7lGNzrsOzzf4YqB3DjfRiVzLs+W5WPNsZR1tngvxk0mBHgWMBR4BfosXSegEYC5wcMJxvwM+S/h/Dl7g6SeA7XK4kU7kWp4tz8WaZyvraPNcqJ9MCvUI4MKE/w/7BfhLYJS/rQXePN0rwG4J5x2Rc8IcybU8W56LNc9W1tHmuVA/mRRqWzxzrbr5uPOB2/3fY4Ar/N/9gQGBJcyRXMuz5blY82xlHW2eC/XTrJsLVa1Q1U26OQrS8Xih88CLKrSPiLwHDAC+be56meJKrkvZlufo5LqUXWpyXcp2meeCJQuN2xJvmPUBm1/53gPoCBwOdA9Da7mSa3m2PBdrnq2so81zoX2ycYhXC7QGlgEH+Nr1BqBWVYeo6oIsrpUNruS6lG15tjwXo1yXsl3mubDIUtsegle4Q4CLo9JcruRani3PJrd4ZLvMcyF9snqjWUR2Ai4E7lXVTRmfmCeu5LqUbXm2PBejXJeyXea5kMjazYVhGIZRvEQdo9kwDMOIMaYUDMMwjHpMKRiGYRj1mFIwDMMw6jGlYBiGYdRjSsEwDMOox5SCYQSAiBwtIj/I4bzZItIlh/Ouy/Ycw8gEUwqG0QgRySV2+dFA1kohD0wpGKGQS+U3jILHD9r+Z0DxArLXACuAfsC3IvIw8BDQFagAfquqU0TkFOB6oA2wHM8V81bAZUCNiFwAXAFMAR4FdvFFXq2qQ0VkWzyPnF2BEXhRv9Kl8y1gZ2BL4D+q+riI3AFsJSJjgImqen7+JWIYHvZGs1FyiMi+wBvAYaq6TEQ6A/cCXYDTVLVGRAYDl6nqdBH5Pp4P/mNEpBOwSlVVRH4D7KOqfxKRm4B1qnq3L+NF4GFVHSIiuwCDVHUfEbkfWKaqt4jIycB7QFf1g8YnSWtnVV0hIlsBI/FCRi4XkXWq2i7McjJKExspGKXIMcBrdQ2x3+gCvOorhHZ4U0Gv+tvBC9QCsBPwsoh0wxstzEoh4zigd8L524hIe+BI4Exf7kARWdlMWq8UkTP83zsDe+KNUAwjFEwpGKWI4E0bNWa9/90CbzTQN8kxD+A5VHtHRI4GbkohowVwqKpuaCDYUxIZDc/96x/nX6dCRD7Hm0YyjNCwhWajFBkM/NSf38efPqpHVdcAs0TkHH+/iEgff3cHoM73/kUJp60F2if8/wj4Q90fEenr//wSbx0CETkR6JQmnR2Alb5C2BvP9XMdVSLSupl8GkbWmFIwSg5VnQj8A/hCRMbirSc05nzgYn//ROA0f/tNeNNKX+EFbKnjXeAMERkjIkcAVwL9RWSciEzCW4gGuBk4UkS+BX4EzE2T1A+BViIyDrgVGJaw73FgnIi8kGm+DSMTbKHZMAzDqMdGCoZhGEY9ttBsGI7x1zYGJ9l1rKqapZERKTZ9ZBiGYdRj00eGYRhGPaYUDMMwjHpMKRiGYRj1mFIwDMMw6vn/sFs8QpuqBLUAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 查看10天的端口调用情况\n",
    "df['2019-5-1':'2019-5-10']['count'].plot()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 217,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Int64Index([3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n",
       "            ...\n",
       "            3, 3, 3, 3, 3, 3, 3, 3, 3, 3],\n",
       "           dtype='int64', name='created_at', length=865)"
      ]
     },
     "execution_count": 217,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 分析周末与平时的访问量对比\n",
    "# 查看5月2日这天时周几\n",
    "df['2019-05-02'].index.weekday\n",
    "# 0代表周一，1代表周二，2代表周三，3代表周四，4代表周五，5代表周六，6调表周日"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 228,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>count</th>\n",
       "      <th>res_time_sum</th>\n",
       "      <th>res_time_min</th>\n",
       "      <th>res_time_max</th>\n",
       "      <th>res_time_avg</th>\n",
       "      <th>created_at</th>\n",
       "      <th>weekday</th>\n",
       "      <th>weekend</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>created_at</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2018-11-01 00:00:07</th>\n",
       "      <td>8</td>\n",
       "      <td>1057.31</td>\n",
       "      <td>88.75</td>\n",
       "      <td>177.72</td>\n",
       "      <td>132.0</td>\n",
       "      <td>2018-11-01 00:00:07</td>\n",
       "      <td>3</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-11-01 00:01:07</th>\n",
       "      <td>5</td>\n",
       "      <td>749.12</td>\n",
       "      <td>103.79</td>\n",
       "      <td>240.38</td>\n",
       "      <td>149.0</td>\n",
       "      <td>2018-11-01 00:01:07</td>\n",
       "      <td>3</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                     count  res_time_sum  res_time_min  res_time_max  \\\n",
       "created_at                                                             \n",
       "2018-11-01 00:00:07      8       1057.31         88.75        177.72   \n",
       "2018-11-01 00:01:07      5        749.12        103.79        240.38   \n",
       "\n",
       "                     res_time_avg           created_at  weekday  weekend  \n",
       "created_at                                                                \n",
       "2018-11-01 00:00:07         132.0  2018-11-01 00:00:07        3    False  \n",
       "2018-11-01 00:01:07         149.0  2018-11-01 00:01:07        3    False  "
      ]
     },
     "execution_count": 228,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 把整个表再加上一列，提示分行数据是周几的\n",
    "df['weekday'] = df.index.weekday\n",
    "df.head(2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 229,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>count</th>\n",
       "      <th>res_time_sum</th>\n",
       "      <th>res_time_min</th>\n",
       "      <th>res_time_max</th>\n",
       "      <th>res_time_avg</th>\n",
       "      <th>created_at</th>\n",
       "      <th>weekday</th>\n",
       "      <th>weekend</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>created_at</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2018-11-01 00:00:07</th>\n",
       "      <td>8</td>\n",
       "      <td>1057.31</td>\n",
       "      <td>88.75</td>\n",
       "      <td>177.72</td>\n",
       "      <td>132.0</td>\n",
       "      <td>2018-11-01 00:00:07</td>\n",
       "      <td>3</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-11-01 00:01:07</th>\n",
       "      <td>5</td>\n",
       "      <td>749.12</td>\n",
       "      <td>103.79</td>\n",
       "      <td>240.38</td>\n",
       "      <td>149.0</td>\n",
       "      <td>2018-11-01 00:01:07</td>\n",
       "      <td>3</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-11-01 00:02:07</th>\n",
       "      <td>5</td>\n",
       "      <td>845.84</td>\n",
       "      <td>136.31</td>\n",
       "      <td>225.73</td>\n",
       "      <td>169.0</td>\n",
       "      <td>2018-11-01 00:02:07</td>\n",
       "      <td>3</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-11-01 00:03:07</th>\n",
       "      <td>9</td>\n",
       "      <td>1305.52</td>\n",
       "      <td>90.12</td>\n",
       "      <td>196.61</td>\n",
       "      <td>145.0</td>\n",
       "      <td>2018-11-01 00:03:07</td>\n",
       "      <td>3</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-11-01 00:04:07</th>\n",
       "      <td>3</td>\n",
       "      <td>568.89</td>\n",
       "      <td>138.45</td>\n",
       "      <td>232.02</td>\n",
       "      <td>189.0</td>\n",
       "      <td>2018-11-01 00:04:07</td>\n",
       "      <td>3</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                     count  res_time_sum  res_time_min  res_time_max  \\\n",
       "created_at                                                             \n",
       "2018-11-01 00:00:07      8       1057.31         88.75        177.72   \n",
       "2018-11-01 00:01:07      5        749.12        103.79        240.38   \n",
       "2018-11-01 00:02:07      5        845.84        136.31        225.73   \n",
       "2018-11-01 00:03:07      9       1305.52         90.12        196.61   \n",
       "2018-11-01 00:04:07      3        568.89        138.45        232.02   \n",
       "\n",
       "                     res_time_avg           created_at  weekday  weekend  \n",
       "created_at                                                                \n",
       "2018-11-01 00:00:07         132.0  2018-11-01 00:00:07        3    False  \n",
       "2018-11-01 00:01:07         149.0  2018-11-01 00:01:07        3    False  \n",
       "2018-11-01 00:02:07         169.0  2018-11-01 00:02:07        3    False  \n",
       "2018-11-01 00:03:07         145.0  2018-11-01 00:03:07        3    False  \n",
       "2018-11-01 00:04:07         189.0  2018-11-01 00:04:07        3    False  "
      ]
     },
     "execution_count": 229,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 如何判断是不是周六、周日，即是不是5、6\n",
    "df['weekend'] = df['weekday'].isin({5:6})\n",
    "df.head(5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 230,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "weekend\n",
       "False    7.156683\n",
       "True     7.292305\n",
       "Name: count, dtype: float64"
      ]
     },
     "execution_count": 230,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 对整个表中的weekday进行分组，按照上面的判断条件，可分为False和True两组，并求平均值\n",
    "df.groupby('weekend')['count'].mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 231,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "weekend  created_at\n",
       "False    0              3.327996\n",
       "         1              1.693657\n",
       "         2              1.159147\n",
       "         3              1.082524\n",
       "         4              1.142857\n",
       "         5              1.166667\n",
       "         6              1.000000\n",
       "         7              1.000000\n",
       "         8              1.032258\n",
       "         9              1.073171\n",
       "         10             1.243198\n",
       "         11             2.006465\n",
       "         12             4.094504\n",
       "         13             6.757748\n",
       "         14             8.479463\n",
       "         15             9.267948\n",
       "         16             8.772731\n",
       "         17             6.993564\n",
       "         18             6.868325\n",
       "         19             8.793228\n",
       "         20            10.690975\n",
       "         21            11.002502\n",
       "         22             9.252738\n",
       "         23             6.111435\n",
       "True     0              3.162264\n",
       "         1              1.667447\n",
       "         2              1.178723\n",
       "         3              1.037037\n",
       "         4              1.111111\n",
       "         5              1.000000\n",
       "         6              1.000000\n",
       "         7              1.000000\n",
       "         8              1.000000\n",
       "         9              1.266667\n",
       "         10             1.246914\n",
       "         11             2.104712\n",
       "         12             4.482374\n",
       "         13             6.597610\n",
       "         14             8.110797\n",
       "         15             8.762065\n",
       "         16             8.519729\n",
       "         17             6.622951\n",
       "         18             7.056773\n",
       "         19             9.055932\n",
       "         20            10.879059\n",
       "         21            11.604716\n",
       "         22            10.489026\n",
       "         23             7.113559\n",
       "Name: count, dtype: float64"
      ]
     },
     "execution_count": 231,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 查看周末那个时段访问量高\n",
    "df .groupby(['weekend',df.index.hour])['count'].mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 232,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\python3.7.6\\lib\\site-packages\\pandas\\plotting\\_matplotlib\\core.py:1235: UserWarning: FixedFormatter should only be used together with FixedLocator\n",
      "  ax.set_xticklabels(xticklabels)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 周末和非周末访问时间对比\n",
    "df.groupby(['weekend',df.index.hour])['count'].mean().plot()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 235,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXAAAAEJCAYAAACNNHw2AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/d3fzzAAAACXBIWXMAAAsTAAALEwEAmpwYAAA5aElEQVR4nO3dd3xUdb7/8dd3Muk9JCGQkELvCUnoRQQBC3awgWJZdctV13Vdd3XvrnfXvfeu18vu6u+ubS2oiBRBsYAo0kRa6IQSWhICgfSQQsrMfH9/TAIEEkoyM2cm+TwfDx6TnDlzzifD8Obke75Faa0RQgjheUxGFyCEEKJ1JMCFEMJDSYALIYSHkgAXQggPJQEuhBAeSgJcCCE81GUDXCn1rlKqQCm157xt/6OU2q+U2qWUWqKUCnNqlUIIIS6iLtcPXCk1DqgEPtBaD2zYNhn4XmttUUr9FUBr/dzlThYZGakTExPbXLQQQnQkW7duLdJaR1243Xy5F2qt1yqlEi/YtuK8bzcC066kiMTERDIyMq5kVyGEEA2UUjnNbXdEG/jDwDIHHEcIIcRVaFOAK6VeACzA3Evs85hSKkMplVFYWNiW0wkhhDhPqwNcKTULmArM0JdoSNdav6W1Ttdap0dFXdSEI4QQopUu2wbeHKXU9cBzwDVa6+q2FFBfX09eXh41NTVtOYzH8PPzIy4uDm9vb6NLEUJ4uMsGuFJqHjAeiFRK5QF/BH4H+ALfKqUANmqtf9qaAvLy8ggODiYxMZGGY7VbWmuKi4vJy8sjKSnJ6HKEEB7uSnqh3NvM5nccVUBNTU2HCG8ApRSdOnVC7gUIIRzBLUZidoTwbtSRflYhhHO5RYALIYTLFR2C/J1GV9EmHTLAx48f7/ABRatXr2bq1KkOPaYQwkmOb4W3r4X3boTyPKOrabUOGeBCiA4sfyd8eDv4hYG2wVe/Bg9dWtIjAvzll1/m1VdfBeDpp59mwoQJAKxcuZKZM2eyYsUKRo4cSWpqKtOnT6eyshKArVu3cs0115CWlsaUKVPIz89vclybzcasWbP4/e9/j9Vq5dlnn2Xo0KEMHjyYN998E7BfWY8fP55p06bRt29fZsyYQWO39+XLl9O3b1/GjBnD4sWLXfV2CCFa6+Qe+OBW8A2BB7+Ea5+HrGWw9zOjK2sVjwjwcePGsW7dOgAyMjKorKykvr6eH374gUGDBvHSSy/x3XffsW3bNtLT05k9ezb19fU88cQTLFq0iK1bt/Lwww/zwgsvnD2mxWJhxowZ9O7dm5deeol33nmH0NBQtmzZwpYtW3j77bc5evQoANu3b+fvf/87e/fu5ciRI6xfv56amhoeffRRvvjiC9atW8fJkycNeW+EEFeoYB98cAuY/WHWUghPgOE/gy7J8PVv4Eyp0RVetVYN5HG1tLQ0tm7dSkVFBb6+vqSmppKRkcG6deu45ZZb2Lt3L6NHjwagrq6OkSNHcuDAAfbs2cOkSZMAsFqtdOnS5ewxH3/8ce66666zob5ixQp27drFokWLACgvL+fgwYP4+PgwbNgw4uLiAEhJSSE7O5ugoCCSkpLo1asXADNnzuStt95y2XsihLgKhVkw5xYweduvvCO627d7meHmV+HtCfDtH+CW14yt8yp5RIB7e3uTmJjIe++9x6hRoxg8eDCrVq3i8OHDJCUlMWnSJObNm9fkNbt372bAgAFs2LCh2WOOGjWKVatW8cwzz+Dn54fWmtdee40pU6Y02W/16tX4+vqe/d7LywuLxQJIl0AhPELxYZhzM6Bh1hfQqUfT57umwMifw4+vweC7IXGMEVW2ikc0oYC9GeWVV15h3LhxjB07ljfeeIOUlBRGjBjB+vXrOXToEADV1dVkZWXRp08fCgsLzwZ4fX09mZmZZ4/3yCOPcOONNzJ9+nQsFgtTpkzh9ddfp76+HoCsrCyqqqparKdv374cPXqUw4cPA1z0H4gQwg2UHLWHt60eHlgKUb2b32/88xCWAF88BfWeM62HxwT42LFjyc/PZ+TIkXTu3Bk/Pz/Gjh1LVFQU77//Pvfeey+DBw9mxIgR7N+/Hx8fHxYtWsRzzz1HcnIyKSkp/Pjjj02O+atf/YrU1FTuv/9+fvKTn9C/f39SU1MZOHAgjz/++Nkr7eb4+fnx1ltvcdNNNzFmzBgSEhKc/RYIIa5GWa692aS+Gh74HDr3b3lfnwC4+e9QfAjWveKyEtvqsivyOFJ6erq+sP/1vn376Nevn8tqcAcd8WcWwqXKj8P7N9pvTD6w1N5MciUWPw57FsHj6y4d+C6mlNqqtU6/cLvHXIELIcQVOZ1vbzapLoH7l1x5eANM+U/wC4UvngSb1WklOooEuBCi/agssHcVrDwFMz+F2LSWd621UFFT33RjYCeY8l+QtwW2OGzOPqeRABdCtA9VRfY27/I8mLEQug1rdrejRVX88fM9DPvLd0x7fQMXNSMPvgt6TISV/+H2w+wlwIUQnq+6xD7CsjQb7psPCaOaPK215sdDRfxkzhYm/O9qPt6cS/8uIRw4VcGGI8VNj6UUTJ3tEcPsPaIfuBBCtEhrmHcPFB2E+z6BpHFnn6qpt7J05wne/eEo+09W0CnQhycm9GLmiHhC/LwZ/p8rmbspl1E9IpseMzzRPsx+xe9h7+cw4DaX/khXSgJcCOHZ8rbAsU1w4yvQwz5PUmFFLR9tzGHuphyKKuvoGxPMy3cO5paUrvh5e5196bS0OOb8mE1hRS1Rwb5Njzv8Z7B7ISz7DXS/BvzDXflTXRFpQsE+ujIlJeXsn+zs7Bb3DQoKcl1hQojL2zYHvAMh+R4yT5TzzIKdjP7v7/nHyoMkx4Xx8U+Gs+ypsdw1tFuT8Aa4b3g8FptmQcaxi4/bOMy+qgi+/aOLfpirI1fggL+/Pzt27DC6DCHE1aqtgD1LKEi4iSfn7GHjkRL8vb24Z1g3HhyVSPeoS19w9YgKYmT3TszbnMvPrumByXTB9BhNhtnf5XbD7OUKvBmVlZVMnDiR1NRUBg0axOeff37RPvn5+YwbN46UlBQGDhx4drbElqa2FUI4wZ7FUF/FEwcGkVNcze9u6MvG303kT7cOvGx4N5oxIp680jOsPdjCWrVuPMzera7A/+OLTPaeOO3QY/bvGsIfbx5wyX3OnDlDSkoKAElJSSxcuJAlS5YQEhJCUVERI0aM4JZbbmkyedXHH3/MlClTeOGFF7BarVRXV1NUVHR2atvAwED++te/Mnv2bP7whz849GcSQjTY9gHlQT3YVNSdz2emkdwt7KoPMbl/DJFBPszdlMv4PtEX79A4zP7D2+3D7Cf8vs1lO4pbBbhRLmxCqa+v5/nnn2ft2rWYTCaOHz/OqVOniImJObvP0KFDefjhh6mvr+e2224jJSWFNWvWNDu1rRDCCU5lwvEMFgc9Rq/oYAbHhbbqMD5mE3eld+ONNYfJLz9Dl1D/i3fqMQEG3wM//A0G3OE2w+zdKsAvd6XsKnPnzqWwsJCtW7eencq2pqbpr07jxo1j7dq1fPXVV9x///08++yzhIeHNzu1rRDCCbZ9iDZ582pRKj+9Ia5N0zvfOyye19cc5pPNx3h6UgszFk75Tzj0rb0p5ZEV9v7iBpM28GaUl5cTHR2Nt7c3q1atIicn56J9cnJyiI6O5tFHH+WRRx5h27ZtLU5tK4RwMEst7PqErPBxlKsQbh8S26bDdYsIYFyvKD7ZkovFamt+p8BOMO43kLcZSo606XyOIgHejBkzZpCRkUF6ejpz586lb9++F+2zevVqUlJSGDJkCJ9++ilPPfVUi1PbCiEcbP+XcKaUf54ezbjeUUSH+LX5kDOGx3PqdC0r9xe0vFOivXmUE9vbfD5HcKsmFKNc2FMkMjKyxZV8GvedNWsWs2bNuuj5CRMmsGXLFscXKYQ4Z9sH1ATGsrS4N6+lxTnkkBP6RhMT4sfcTblMGRDT/E5R/exrah7fCoOmOeS8bSFX4EIIz1KaDUdWs8p/MsF+PlzXr7NDDmv2MnHPsG6sO1hIbnF18zt5me19w49vdcg520oCXAjhWbbPRaN4+VQaNyd3vWh0ZVvcMzQek1LM25Lb8k6xaZC/E6z1Le/jIpcNcKXUu0qpAqXUnvO2RSilvlVKHWx4dL9JAoQQ7Y/NCjvmcjJqFEfrI5jmoOaTRjGhfkzsG82CLceos7RwMzM2FSw1ULDXoedujSu5An8fuP6Cbb8FVmqtewErG74XQgjnOvw9nD7O3Prx9IgKJKUVA3cuZ8aIBIqr6vgm82TzOzQuEuEGzSiXDXCt9Vqg5ILNtwJzGr6eA9zm2LKEEKIZ2+Zg9e/Emyf7MC2tW5v6frdkbM9IukX4M3fTxd2HAfuw+oBOnhHgLeistc4HaHhsZvypEEI4UGUBHFjG9vDrsSpzm/t+t8RkUtw7LJ6NR0o4VNDMXEZKQddUOG58V0Kn38RUSj2mlMpQSmUUFrYwWYyBiouLz04jGxMTQ2xs7Nnv6+rqjC5PCNFo5ydgszC7aDhjekURE9r2vt8tmZ7WDW8vxcebWriZGZsGhfug1tjJ6lob4KeUUl0AGh5b7PmutX5La52utU6Piopq5emcp1OnTuzYsYMdO3bw05/+lKeffvrs9z4+PlgsFqNLFEJoDds+4HRUKj+ejnT4zcsLRQX7MmVADJ9uy6OmvpnV6WPT7Euu5e90ah2X09oAXwo0jmKZBVw836oHe/DBB/nVr37Ftddey3PPPceLL77IK6+8cvb5gQMHnl304aOPPmLYsGGkpKTw+OOPY7U285cthGib3I1QfJCvzJMI9jMzub9j+n5fyozhCZSfqeerXfkXPxmban80uB38siMxlVLzgPFApFIqD/gj8N/AAqXUI0AuMN0h1Sz7LZzc7ZBDnRUzCG7476t+WVZWFt999x1eXl68+OKLze6zb98+5s+fz/r16/H29ubnP/85c+fO5YEHHmhj0UKIJrZ/iPYJ4pW8/tyc6ti+3y0Z0T2C7lGBzN2Uw50XXvEHRtpvZrp7gGut723hqYkOrsWtTJ8+HS+vS39IVq5cydatWxk6dChgn1c8Olru5wrhUDXlkLmEI11uojjLmztTndt80kgpxYzhCfz5y73sPXGa/l1Dmu4QmwZ5GS6ppSXuNRdKK66UnSUwMPDs12azGZvtXKf+xqlltdbMmjWL//qv/3J5fUJ0GHs+hfpq/lU1hu6RgaTGh7ns1HemxvLy8v18vDmHl24b1PTJ2FTIXAyVhRBkzP09GUp/BRITE9m2bRsA27Zt4+jRowBMnDiRRYsWUVBgv4dbUlLS7NSzQog22PYBdZ36Me94JHemtW3e76sVFuDD1MFd+Wz7CapqL+jQ0Dig58Q2l9VzIQnwK3DnnXdSUlJCSkoKr7/+Or172yd879+/Py+99BKTJ09m8ODBTJo0ifz8Zm54CCFa5+RuOLGd9SE3opTijlTn9P2+lPuGx1NZa2HpzhNNn+iSDMpkaDu4ezWhGKylm5X+/v6sWLGi2efuvvtu7r77bidWJUQHtu1DtJcP/5M/mDE9I5tf7szJUuPD6BsTzEcbc7hn6HmjP30CIbq/oQEuV+BCCPdUXwO75lPcbTJ7y7yd3ve7JUopZoxIIPPEaXbllTd9MjbVHuBaG1KbBLgQwj3t/xJqylhkm0iwr5nJ/VtYZMEFbkvpSoCP18Xzo8SmwZlSKD1qSF1uEeDaoP+9jNCRflYh2mTbHGxhCbyWHcPU5C74+zi/73dLgv28uTUllqU7T1B+5rx5wLs2Dugx5kam4QHu5+dHcXFxhwg2rTXFxcX4+TlvDgch2oWSI3B0LXs730JVnXZZ3+9LmTE8npp6G0u25Z3bGH3eEmsGMPwmZlxcHHl5ebjjRFfO4OfnR1yc8R9G4fnyy8/wzIKdXNevMw+OSsRkcl33OqfbPheUiX+WDSOxUwBpCcavGTMwNpTkbmHM3ZTLrFGJ9puZXt723igGXYEbHuDe3t4kJSUZXYYQHqW8up5Z727mUEElPx4uZuX+U7wyPdmQXhoOZ7XAjrmcSZjA1/u9+PVk1/b9vpRpqbH8++eZZBdXkxTZMNgvNg0y3rUvsebl7dJ6DG9CEUJcnZp6K49+kMHRoio+emQ4/33HILbnljHlb2sv7qvsiQ59BxX5fOc3GaXgdjdoPmk0LKkTANtySs9tjE0Fyxko2OfyeiTAhfAgVpvmqU+2syWnhNl3pTCqZyT3DIvn6yfH0iM6iCfnbeepT7ZTXm38gruttv1DdGAU/5uTxOgekcSGuc9vFb2igwj2NbM19/wAN26JNQlwITyE1pp//3wP32Se4g9T+3NzctezzyVGBrLw8ZE8M6k3X+3K5/p/rOXHQ0UGVttKDavu5CfeTnZpPXemuX7k5aWYTIohCeFNr8DDE8E/QgJcCNGyV1ce4uNNufz0mh48NPri+0ZmLxNPTOzF4p+Pwt/Hi/v+tYk/f7m3+QUJ3NWeT0FbmVszhiBfM1MGGNf3uyWp8WEcOFVBRU3DbzlKNQzocf2NTAlwITzAvM25/O27LO5IjeW56/tcct/BcWF89cRYHhiZwDs/HOWW//cDmSfKL/kat7FrAdbOg3jvoC83DepCgI/h/SwukpYQjtaw41jZuY2NS6zVVbm0FglwIdzcisyTvLBkN+P7RPHXOwdfUY8Mfx8v/nTrQN5/aCil1fXc9n/reX31Yaw2Nx5vUXwYTmwjs9MUquusTEt3n5uX50vpFoZSsDXngnZwA5ZYkwAXwo1lZJfwxLztDIoL458zUvH2urp/suP7RPPNL8cxsW9n/rp8P/e+tZFjJdVOqraNdi0AFG+WDCGhUwDpbtD3uznBft706RzcNMC7GrPEmgS4EG4q61QFj8zJIDbMn/ceHHpxc4LWkLUC8nddcjKliEAfXp+ZyivTk9mbf5ob/rGOVftbXIfcGFrD7gXUxI3iq2zFnanu0/e7OWkJ4ezILTv3G01QFITFS4ALIeBE2RlmvbsZH7OJOQ8PIyLQp+kOVgt89nP4eDq8ORb+Xzqs+k8o2N/s8ZRSTEuLY9lTY+kS6sd/fJHpXtNXHN8GJUdY738tALcPca/eJxdKSwinotbCwYKKcxtj0yTAhejoGkdZVtZYmPPQMLpFBDTdof4MzJ8JOz+Gcc/C1L9BcBdY8zL8czj8cxSs/R97m/IFukUE8LPxPcgurmbDkWIX/URXYPcCtJcPfzvRjxHdIy7+md1M49D+bTll5zZ2TYWyXPsSay4iAS6EG6mpt/KTD7aQU1zNmw+kXbyQ7pky+PAOyFoON74CE34P6Q/Dg1/CM/vhhpfBNwi+fwleS4U3r4H1/7AHS4MbB3UhxM/MvM3HXPvDtcRqgT2LKYubwJ5ixR1uNPKyJfERAXQK9Ln4Ria4dIk1CXAh3ITFauOJedvJyCll9t3JjOoR2XSHilPw/lTI2wLT3oFhjzZ9PjgGhj8Oj6yAX+6BSX+291H+9g/w90Hwr0mw8Q38agq5IzWO5XvyKa6sdd0P2JKja6CqgK8Zi5+3iRsGul/f7wsppUhNCGfb+SMyzy6xJgEuRIdiH2WZybd7T/HHqf2ZOrhr0x1KjsC7k+2P982HgXde+oBh3WD0k/DYanhyO0z4d6ivhuXPwf/25Rc+X1Fv1Xx6/tSoRtm9EO0bwt9yErh+QAzBfq6dEKq10hLCOVpUde4/Qd8giOrn0nZwCXAh3MDXu08yb3MuPxvfgwcvHGWZvwvemQI15TBrKfSceHUHj+gO434NP1sPv9gMiWOI2vlPRsQHMm/zMWNvZtZVw74vyOsyiaIak0c0nzQ62w6eW3Zuo4uXWJMAF8INzPkxm/iIAJ6dfMEoy+z18P5N9mlKH/4G4tLbdqKoPjD6KThTylPxRzlaVMXGIyVtO2ZbZC2Dukrm14ygc4gvo3tGXv41bmJQbCjeXuridvAzJVCa7ZIaJMCFMNiBkxVszi5hxvD4posy7P8aProDgjrbwzvq0kPor1j3ayEohmHlyxtuZuZe/jXOsmsh1qAY3srtym1DYvHyoEUp/Ly9GNA19OKpZcFlzSgS4EIY7KONOfiYTUxP73Zu4/a59q6C0f3t4R3WreUDXC0vMyTfjdehb7l/UADL95ykpKrOcce/UtUlcOhb9kZMps6m3GLZtKuVGh/Ozrwy6q02+4bo/mD2c9mNTAlwIQxUWWthyfbjTB3U5dxgnfX/gM9/Dklj7W3egZ0cf+Lk+0BbmRW0hTqrjcVG3MzMXAI2C2+XpzEoNpTenYNdX0MbpSWEU2uxsffEafuGs0usyRW4EO3eZ9uPU1lrYebIBPuNrxX/bu/21/82uG8B+Dop1KL7Qmwa0YcXkRYfxsebc11/M3P3QmrDe7H0VCR3pLr3yMuWpCaEAc1MbJW/096/3cnaFOBKqaeVUplKqT1KqXlKKVluXYgrpLXmo4059O8SwpDYIPj83+DHV+0Dc6a9C2Zf5xaQfC8UZPKzvtUcKaxi01EX3swsy4XcDWwMnIDZZOKW5K6Xf40b6hLqT2yY/8Ur9FjO2KeXdbJWB7hSKhZ4EkjXWg8EvIB7HFWYEO3d1pxS9p+s4P6RCait78OOj2Dcb+Cm2WDycn4BA+8ELx/GV68g2NU3M3cvBOBvJ5MZ3yeaTkFO/s/KiVIvXKHHhTcy29qEYgb8lVJmIABoByuqCuEaH27MIdjXzK2Do+1X3nFD4drn7aMnXSEgAvrciHnvp0xPjmbZ7pOUuuJmptawayHlkansqAzjTg9tPmmUFh9GfnkNJ8rO2DeEJ4F/uHsHuNb6OPAKkAvkA+Va6xWOKkyI9qyospZlu09yZ1ocAVlf2JsUxjztuvBulDIDqot5OOYgdVaba0ZmnsqEwn2s8BpLqL83E/pFO/+cTpSWEAGc1w6ulH1iKxf0RGlLE0o4cCuQBHQFApVSM5vZ7zGlVIZSKqOw0HWzdAnhzhZkHKPOamPm8G7ww98gqi/0vsH1hfSYAEGdicv+jCHxYcxzxc3M3QvQyovZJwZwc3IXfM0uaC5yor5dgvHzNjWdFyU2DQr2On2JtbY0oVwHHNVaF2qt64HFwKgLd9Jav6W1Ttdap0dFRbXhdEK0D1ab5uNNuYzoHkHP8g1QkAmjfwkmAzqFeZlh8F1w8BseSg7kcGEVm515M9Nmg92fkh85ivz6II/s+30hby8TyXFhF7SDu2aJtbZ8YnKBEUqpAGVfOmMi4PzbrkJ4uDVZBeSVnuH+EYn2q++QOBg0zbiCku8Dm4Xr9Q/Ov5mZ+yOczmNh/Si6RwaS0i3MeedyobSEcDJPnOZMndW+4eyNTOc2o7SlDXwTsAjYBuxuONZbDqpLiHbro425RAX7MiX4CORugFFP2AeAGKVzf+g6BJ89n3D7kFi+3uPEm5m7FmDzDuCNk324IzXWrZdNuxppCeFYbJpdeWX2DUHREOr8Jdba9Dub1vqPWuu+WuuBWuv7tdZuMLmwEO7rWEk1qw4UcO/Qbpg3vAr+EZB6v9Fl2W9mntzNrKQK6iw2Fm8/7vhzWGph72dkhV3DGfy4vR00nzQaEm+fmbBpf/BU9w5wIcTV+XhzLialuL9HlX1VneE/BZ9Ao8s62ye8x4mlpHRz0s3Mg99CTTnvnk5nZPdOxIb5O/b4BooI9KF7VODF/cHLcqCqyGnnlQAXwkVqLVbmbznGxL7RRO18A7wDL15VxygBEdDnBtg1n5lDu3CooJKM88PIEXYvoN6vE5+W9+bOtPZz9d0oNT6cbbll5/7ja1xizYnt4BLgQrhI46x/PxnkBbsXQdqD9uB0F8n3QXUxNwfsIdjXzLxNDryZWVMOB5azJXA8Pt4+XO8By6ZdrbSEcEqq6sgurrZv6JLSsMSa85pRJMCFcJEPN+SQ2CmAoSfm2v9hj/yF0SU11XMiBEbju2c+tw2J5cvd+ZRVO+hm5r4vwFrLP4uHcP3AGIJ8zY45rhtpXKHn7IAe3yB7/34JcCE8277802TklPKT1GDU9g8h+W4IdbMh5F7e9j7hWcuZOSjQfjNzm4NuZu5aQFVgN36oSWoXfb+b0zMqiGA/8wUzE6baV6l30uAoCXAhXOCjjTn4mk1Ms3xp740x6imjS2peir1PeJ/Cb0h21M3M0/lwdC3fm8cRE+LPyB5OmN/cDZhMyt4OfuGAnupi+81MZ5zTKUcVQpxVUVPPku3HmTYwFL/t70K/qRDV2+iymtd5gL3tdsdc7hvWjYMFlU2vKFsjczGgebVwCLenetayaVcrLSGcrIIKys/U2zd0de7MhBLgQjjZZ9uPU11n5Rch6+w380Y/bXRJl5ZyH5zcxS1dSgnyNfNxW0dm7lpAUXA/Dtq6cscQN2s2crC0hHC0hh3HyuwbOg8AL1+n9USRABfCibTWfLgxhyFdA+i6911IGgdxaUaXdWkDp4HJG//MBdw2pCtf7cqnvLq+dccqOgj5O1hiGcXguFB6eeCyaVcjuVsYJsW5ZhQnL7EmAS6EE23JLiXrVCXPx+6AypP2KWPdXWAn6HM97JrPveldqLXYWLK9ldPM7lqARvF2aWq7vXl5viBfM31iQi6emfDEDqcssSYBLoQTfbgxhzA/E2nHP7RfiXW/1uiSrkzKDKgqZEDVFpLjQlu3ZqbWsHsB2SFplHpFcLOHLpt2tdISwtieW4bVdt6AHictsSYBLoSTFFbUsnxPPi90P4yp5LAxCza0Vs/rIDAKdszl3mHxZJ2qbHpVeSX2fwml2XxYNZxr+0QTEejjnFrdTFpCOJW1FrJOVdg3xKZCdH+oOe3wc0mAC+EkCzKOUW+1cXPFfIjoAf1uMbqkK+flDYPvhgPLubmXH0G+Zl77/hBbsks4XXOZ9vDKAlj8OMyfSXVQAguqhnBHB2g+aZQWf8EKPZ16wM83QOJoh5+r/Q2HEsINNC7a8HhcDn6Fu+DmV12zULEjJd8LG/4fgVmf8dDoa3jt+0OsPmBfVSs2zJ8+McH0iQmmb8Nj9wh/fHbOgZV/grpqGPtrfn/yOszVFVzbt+Ms5tItwp/IIF+25ZQyc0SCU88lAS6EE6zaX8DxsjM8FrwUgmIg+R6jS7p6MQMhZjDsmMuvHnuUe4bFc+DkafafrOBAw591Bwupt2oGqiP8xfs9kk2HyQpIJSPteTrFDOKrVdu5e2g3j1827WoopUiND2s6tayTSIAL4QQfbcrh2qBcOhVuhEl/BrOv0SW1TsoMWP4cqmAvsZ0HEBvmz4S+nc8+XVdZStXyFwnb8wFV3mG8Gfo7PqgYyvF1NbDO3nWuIzWfNEpLCGfF3lMUVdYSGeS8v3sJcCEcLLe4mjVZhazo+g1UhdpnHfRUg6bDit/Djo9hyl/Obdcadi/E55sX8KkugmGPEjThBR73C+VxoPxMPVmnKjhTZ203y6ZdjcaJrbbllDJ5gPNmXpSbmEI42MKtx+ipTtCzeDUMfRT8QowuqfUCO0HvKbBrwbl+zIVZMOdmWPwohMbBo9/DjS+DX+jZl4X6ezM0MYJxvTtO2/f5BsaG4u2lnN6MIlfgQjjYmqxCfhe6AlXva19xx9OlzLB3Cdz/BZzcDetfBZ8AuGm2/bcLT7s56wJ+3l4MjA1tOrGVE0iAC+FApVV1FB4/wjV+30P6QxDUDq5Ae02CgEhY+KD9++T7YNKf2sfP5kRp8eF8sDGHOosNH7NzGjukCUUIB9pwpJj7vb7FhIZR/2Z0OY7h5Q2jn4TYdHjwa7j9dQnvK5CWEE6dxUbmiXKnnUMCXAgH+uFgIbd6bUD3uBbCE40ux3FGPwWPrnTKYJT2KvXCFXqcQJpQhHCg4qyNxKpCGHCH0aUIg3UO8SM2zJ/tuWVOO4dcgQvhIMdKqkmtXI1VmaHvjUaXI9xAWkI4GTklbV/VqAUS4EI4yA8HC7nJaxM18deAf7jR5Qg3kJYQzqnTtZwor3HK8SXAhXCQvD3riFNFBAyZZnQpwk1ctFK9g0mAC+EANpsm5tgyLMob1UeaT4Rd35hg/L29nNYfXAJcCAfYe6KMCXoDRdGjwT/M6HKEmzB7mUjuFuqeV+BKqTCl1CKl1H6l1D6l1EhHFSaEJzm4bRWxqpiAVGk+EU2lJYSzN/801XXut6TaP4DlWuu+QDLg+DWDhPAA/llLqcNMSLIHLdogXCItIRyrTbMrz/EDelod4EqpEGAc8A6A1rpOa13moLqE8Bg1dfWkVKzhaOjIJhM6CQGQGh/OkxN7ERPi5/Bjt+UKvDtQCLynlNqulPqXUirQQXUJ4TGyMlYSo0qw9rvV6FKEGwoL8OFXk3qTGOn4eGxLgJuBVOB1rfUQoAr47YU7KaUeU0plKKUyCgsL23A6IdxT3a5PqdXeJIy60+hSRAfTlgDPA/K01psavl+EPdCb0Fq/pbVO11qnR0XJBDiinbHZSCr4jp1+QwkMiTC6GtHBtDrAtdYngWNKqT4NmyYCex1SlRAeouLgOjrZSihOlL7fwvXaOpnVE8BcpZQPcAR4qO0lCeE5ijcvwFt7EzP0NqNLER1QmwJca70DSHdMKUJ4GJuViJxlrGMI1ybFGl2N6IBkJKYQrZW7kRBLMUeiJ2P2kn9KwvVkPnAhWqli20LM2ofAgdL+LYwhlw1CtIbNinn/Ur63pTCiX4LR1YgOSgJciNbI+RH/umLW+46jR5SMXxPGkCYUIVpBZy6hBl90z0kopYwuR3RQcgUuxNWyWrBmfs5K6xCG9YkzuhrRgUmAC3G1ctZjPlPEl9YRjO4RaXQ1ogOTABfiamUuoVb5ciJyNNFOmGFOiCslAS7E1bBa0PuW8p01lfRe0nwijCUBLsTVyF6Hqi5mqWU4Y3p1Mroa0cFJgAtxNTKXUGfy5weGMCxJAlwYS7oRCnGlrBbY9wUbvIcxILozQb7yz0cYS67AhbhS2WvhTAlzK1MZ3VN6nwjjSYALcaUyl2AxB7DGmizt38ItyO+AQlwJaz3s+4I9QWPwrg9gcFyY0RUJIQEuxBU5ugbOlDLfls6I7p3wluljhRuQT6EQVyJzCTafYBaX92ZMT2k+Ee5BAlyIy7HUwb4vyYkaTy0+jOklNzCFe5AAF+Jyjq6BmjK+0SPpHOJLj6ggoysSApAAF+LyMpegfUN472QSY3pGyfSxwm1IgAtxKQ3NJ2XxkzlVraX7oHArEuBCXMqRVVBbzgb/cQAyfaxwK9KNUIhLyVwCfqEsKOlB785WmT5WuBW5AheiJVYLHFiGtdcNbMiuYEzPKKMrEqIJCXAhWpK3GWrKOBQ2hlqLTdq/hduRABeiJQeWgcmbZWf6YTYpmT5WuB0JcCFakvUNJI5mVXYNQ+LDZPpY4XYkwIVoTskRKDpAdeJ17DpeLtPHCrfU5gBXSnkppbYrpb50REFCuIWsbwDY4j0MrWGsDJ8XbsgRV+BPAfsccBwh3EfWcojsw4qTAQT5mmX6WOGW2hTgSqk44CbgX44pRwg3UHMasteje1/Pqv0FMn2scFtt/VT+HfgNYGt7KUK4icPfg62erNBRnCiv4abBMUZXJESzWh3gSqmpQIHWeutl9ntMKZWhlMooLCxs7emEcJ2s5eAXxvyTXfAxm7iuX2ejKxKiWW25Ah8N3KKUygY+ASYopT66cCet9Vta63StdXpUlIxkE27OZoWDK7D1msyXewq5tk8UwX7eRlclRLNaHeBa699preO01onAPcD3WuuZDqtMCCMc3wrVxRwOG01BRS1TB3c1uiIhWiR3ZoQ434FloLyYX9obf28vJvaLNroiIVrkkKFlWuvVwGpHHEsIQ2V9gy1+JEv2VTGhXzQBPjL6UrgvuQIXolFZLhRkkt1pHMVVddw8uIvRFQlxSRLgQjRqGH25uHIAgT5ejO8jzSfCvcnvh0I0OrAMHdGDjw75MKl/FH7eXkZXJMQlyRW4EAC1lZC9jmNR11BWXS+9T4RHkAAXAuDIarDW8WXNIIL9zIztLZNXCfcnAS4EQNYytG8Ib2d3ZsqAGHzN0nwi3J9HBHidxcaBkxVGlyHaK5sNslZwMnoMpbUwVXqfCA/hEQH+2093MeNfG6m1WI0uRbRHJ7ZDVQHfWoYQHuAtizcIj+ERAX57aixFlXV8sTPf6FJEe5S1HK1MvH48iesHxsjUscJjeMQndUyPToyMrOG99UfRWhtdjmhvspZRGjGE/LoA6X0iPIpHBLj68in+ZXmerBMlbMkuNboc0Z6UH4eTu1lDGpFBPgxPijC6IiGumEcEOH1vJrDmJPf4beTdH44aXY1oTw7aR1/+q6A3NwzsglmaT4QH8YxPa69J0HkQv/T7iu/2nuBYSbXRFYn24sByqgK6kVnfRXqfCI/jGQGuFIx9mk41OUw2ZfDhxhyjKxLtQV01HF3DBnM6nUP8GJoozSfCs3hGgAP0vw0iuvNc0Nd8sjmH6jqL0RUJT3d0DVhq+KikHzcO6oLJpIyuSIir4jkBbvKC0b8koTaL5LrtfLrtuNEVCU+XtZx6rwDWW/pK7xPhkTwnwAGS70EHd+U3AV/x3vqj2GzSpVC0ktaQ9Q07fNOIDgsmNT7M6IqEuGqeFeBmX9Sof2OQZTdhRdtZe1BWuRetlL8TKvJZcHoANw3uglLSfCI8j2cFOEDqLLR/BE/7fcF767ONrkZ4qqxv0Ci+tyRL7xPhsTwvwH2DUCN+xli9lVMHt3KooNLoioQnylrGIZ9+BEZ0YVBsqNHVCNEqnhfgAMMexeYdyC+8lzLnx2yjqxGepuIknNjO59WDmCrNJ8KDeWaA+4djGvoIN5k2snlrBuXV9UZXJDxJw9qX31mHSO8T4dE8M8ABRv4CvLyZpT9nfkau0dUIT5L1DYVe0dR16ku/LsFGVyNEq3lugAfHYBoyg+nmdXy1fjsWq83oioQnqK9BH/6e5XXJ3JwcK80nwqN5boADjHoSL2XjpqrFfLfvlNHVCE+QvQ5lOcN31lRuTpbeJ8KzeXaARyTBwDuZaV7JgnW7jK5GeIKs5dTgS0nUMHpGS/OJ8GyeHeCAaczTBFDDoLz57DlebnQ5wp1pjWX/MtZaBzIlOcHoaoRoM48PcDr3p77n9TxsXs7Ha/caXY1wZ6cyMVcc5ztbqvQ+Ee2C5wc44H3NrwlVVYTs/YjCilqjyxHuKmsZAPnRY0mMDDS4GCHartUBrpTqppRapZTap5TKVEo95cjCrkq3oVTHjuYh05fM33DIsDKEe6vdu4wdtu6MThlodClCOERbrsAtwDNa637ACOAXSqn+jinr6gVMeJbOqozTm+ZQZ5EuheIC+77A9+RWVljTuWmQ9D4R7UOrA1xrna+13tbwdQWwD4h1VGFXrft4TkcM5r76z/h6pwzsEefJ34Ve/Bj7vfqwpct9dIsIMLoiIRzCIW3gSqlEYAiwqZnnHlNKZSilMgoLnTj9q1IEX/csiaZTHFz1EVrLXOECqCyAefdSoYK4v+opbh/aw+iKhHCYNge4UioI+BT4pdb69IXPa63f0lqna63To6Ki2nq6S9fSdyplgd2ZevoTtmaXOPVcwgNYamH+TOori7i34ikmDR/MvcO6GV2VEA7TpgBXSnljD++5WuvFjimpDUwm/Cc8Qz/TMbas+MToaoSRtIYvn4Zjm3iq5jGSBo3iz7cOlKHzol1pSy8UBbwD7NNaz3ZcSW3jm3I3ZT4xDD/+HidKq40uRxhlw//Bjrn83XIHVT1vZvZdKXjJosWinWnLFfho4H5gglJqR8OfGx1UV+t5eaNHPUWq6SCrVnxmdDXCCFkr0N/+O8tsw1nf9RHemJmGj7ldDHkQoom29EL5QWuttNaDtdYpDX++dmRxrRU++iFOe4WTtO8NTpSdMboc4UoF+7EufJh9tnjejHiWfz00HH8fL6OrEsIp2udlibc/1amPM4qd/PD3B1iTmW10RcIVqkuo++guSutN/DHgBd5+ZByh/t5GVyWE07TPAAdipjxDWcrjTONb4udP5sOFC2XO8PbMWk/NxzPRp0/wnPm3zH50KlHBvkZXJYRTtdsAx+xD2G0vUz9zKWG+ivv2PMrS2T/jZMlFPR1FO1C99Nf45a3nz+pxfvvo/TJYR3QI7TfAG/j2HEf4M1s4lnAHd1R9QvmrY8nY/IPRZQkHqv7hDQJ2vs87+hamP/wsvTrLPN+iY2j3AQ6AXwiJD7/LiRveI1qVMeirW1nz7u+x1MtiyJ7uzIGV+H73O763pdJv5iskdwszuiQhXKZjBHiDrsPvwO/JzWSFjuSa3Nc4+PI1FOXuN7os0Uq1BQexfvIAh21d0Xe8zahenY0uSQiX6lABDuAf3plBT3/BlpT/JK7uCP7vXsPBZf9nH7knPIalqpSSt++gzgaHr/sXE1N6Gl2SEC5nNroAQyjF0Nt+wdGBEymb9yhDNj3PkayvSXjoHbxCYoyuruMoz4Odn0DeFjCZwewLXr5g9jn3aPa7aFu11Uze2jkk1R3n2/Q3uXHcSKN/EiEMoVw5a196errOyMhw2fmuRHVtHd+8+yduOPkG9V7+2G6aTWjqNJA5M5yj/gzs+xJ2zIUjqwENUf3s77elFqx1DY+1YKkDS419n2Z82+N5Jt3/nCurF8IQSqmtWuv0i7Z39ABvtGzVauJWP80gdYRKr1AKg/tR1WkgtpgU/BLSiOzag/BAn1ZPhlRnsVFaXUdRZS3FlXUUV9Vy+oyFWouVmnrb2ceaeiu1lgsez3vey6RI7hbGsKRw0hMiiAv3d/8JmrS2X2XvmAt7FkPtaQiNh5R7IfleiEg6b1dNTnE1m4+WsDm7hC1HizleUoEPFkJ9bKTHBZIWG8CQpM4M7tfX/X92IRxAAvwKHDhewppFr9KlfCc9LYfopfIwK/vgn2IdTKbuTrZPLwqC+lIRMRC/Tgl0DvUnJtQPm9b2YK6spaiqjpLKOk5XVkDFKbyrTxJcV0hnVUJnVUaMKqGzKgXgsK0Lh3VXsoklzyuOYnNnfLy98fP2wsdsws/bC9+GRz9vE9V1VnbkllFRawEgJsSP9MRwhiZGkJ4YTt+YEPeZtOn0Cdg5D3Z8DMWHwDsA+t8KKfdBwhisKCprLRwvPcOW7JKzod24rml4gDdDEyMYlhTB0MQIBnQNwezV4W7bCCEBfrUsVhtFZeWUH92OJW873gW7CC3LJLL6MF7YQ71EB7PHlshunYQFM52xB3OsVxmdVQmhuuKi41pNvtQHxqCDu2BWGq/Sw5iqi87t4OULnXpCZC+I7A1Rfexfd+oJPvaFeK02zYGTFWTklLAlu5QtR0s4eboGgGBfM6kJ4QxNDCc9MYKUbmH4eTtuLhCbTXOm3kpVnYUzdVaqaq1U11mormt4rK4i4ti3JOV9TrfSTZiwcdB/MKv9J/G9aSRFdT5U1FioqKmnqs7a5NhdQ/3sYZ0UwbDECHpEBWFyl/+MhDCQBLij1NfAqUw4sQ19YgfW49vxKjoA2ooOjEKFdEEFd4WQLhDcFYJjzn0d0gX8wi5uX68ugaKDUHQAirIavs6C0mzQ5w3/D+0GYfFgahrIGqitt1FRU8/pGgunz9RT3RCOSkGgr/nqr8o12LTGqjU2m/3RarMHeEsUmoGmbEJUNXk6ks/1NXzrM4HT/nEE+3kT4mcmyNdMsJ+ZYD/vs19HBfuSlhBOXLiMnhSiORLgzmSpBWUCLwdPnGSphZIjDaHeEOxlx2jppl6Tl9psVNZYqKi1UFVraVUvSZNSmEzgpRQmk8KkFF4mhUmByaTs2xu3NexnC0tED74Xv97X4G3umJ2chHC0lgJc/oU5gtlJkyaZfSG6n/3P1b4UCGv4I4Ron+SOkBBCeCgJcCGE8FAS4EII4aEkwIUQwkNJgAshhIeSABdCCA8lAS6EEB5KAlwIITyUS0diKqUKgZxWvjwSKLrsXu2fvA/nyHthJ++DXXt+HxK01lEXbnRpgLeFUiqjuaGkHY28D+fIe2En74NdR3wfpAlFCCE8lAS4EEJ4KE8K8LeMLsBNyPtwjrwXdvI+2HW498Fj2sCFEEI05UlX4EIIIc7jEQGulLpeKXVAKXVIKfVbo+sxilIqWym1Wym1QynVDlfGaJ5S6l2lVIFSas952yKUUt8qpQ42PIYbWaMrtPA+vKiUOt7wmdihlLrRyBpdQSnVTSm1Sim1TymVqZR6qmF7h/tMuH2AK6W8gP8DbgD6A/cqpfobW5WhrtVap3Sw7lLvA9dfsO23wEqtdS9gZcP37d37XPw+APyt4TORorX+2sU1GcECPKO17geMAH7RkAkd7jPh9gEODAMOaa2PaK3rgE+AWw2uSbiQ1notUHLB5luBOQ1fzwFuc2VNRmjhfehwtNb5WuttDV9XAPuAWDrgZ8ITAjwWOHbe93kN2zoiDaxQSm1VSj1mdDEG66y1zgf7P2gg2uB6jPRvSqldDU0s7b7Z4HxKqURgCLCJDviZ8IQAb2459Y7adWa01joVe3PSL5RS44wuSBjudaAHkALkA/9raDUupJQKAj4Ffqm1Pm10PUbwhADPA7qd930ccMKgWgyltT7R8FgALMHevNRRnVJKdQFoeCwwuB5DaK1Paa2tWmsb8DYd5DOhlPLGHt5ztdaLGzZ3uM+EJwT4FqCXUipJKeUD3AMsNbgml1NKBSqlghu/BiYDey79qnZtKTCr4etZwOcG1mKYxsBqcDsd4DOhlFLAO8A+rfXs857qcJ8JjxjI09A16u+AF/Cu1vovxlbkekqp7tivugHMwMcd5X1QSs0DxmOfbe4U8EfgM2ABEA/kAtO11u36Bl8L78N47M0nGsgGHm9sB26vlFJjgHXAbsDWsPl57O3gHesz4QkBLoQQ4mKe0IQihBCiGRLgQgjhoSTAhRDCQ0mACyGEh5IAF0IIDyUBLoQQHkoCXHQ4SqnxSqlRrXhdtlIqshWve/5qXyPElZAAFx5NKWVuxcvGA1cd4G0gAS6cojUffiFcSin1APBr7KMNdwFW7NOqDgG2KaX+iX3O+CigGnhUa71fKXUz8HvABygGZgD+wE8Bq1JqJvAEsB94A/sIPrBPjrReKdUJmNdw3M00P7Ha+XV+hn3eHj/gH1rrt5RS/w34K6V2AJla6xltf0eEsJORmMKtKaUGAIuxz8RYpJSKAGZjH05+q9baqpRaCfxUa31QKTUc+C+t9YSGqVXLtNZaKfUToJ/W+hml1ItApdb6lYZzfAz8U2v9g1IqHvhGa91PKfUqUKS1/pNS6ibgSyBKa13UQq0RWusSpZQ/9jl8rtFaFyulKrXWQc58n0THJFfgwt1NABY1hmZDQAIsbAjvIOzNIQsbtgP4NjzGAfMbJnzyAY62cI7rgP7nvT6kYeKwccAdDef9SilVeplan1RK3d7wdTegF/YrfyGcQgJcuDtF8/O/VzU8mrBfZac0s89rwGyt9VKl1HjgxRbOYQJGaq3PNDmxPdCv6FfUhuNf13CcaqXUauxNKUI4jdzEFO5uJXBXQ3s0DU0oZzVM5H9UKTW94XmllEpueDoUON7w9azzXlYBBJ/3/Qrg3xq/UUqlNHy5Fnu7OUqpG4BLrXYTCpQ2hHdf7Gs1NqpvmL9aCIeSABduTWudCfwFWKOU2om9/ftCM4BHGp7P5NyaqS9ib1pZB5zfbv0FcHvDKu5jgSeB9IZlyfZiv8kJ8B/AOKXUNuzzr+deotTlgFkptQv4M7DxvOfeAnYppeZe6c8txJWQm5hCCOGh5ApcCCE8lNzEFOIqNLTFr2zmqYlaa+lxIlxKmlCEEMJDSROKEEJ4KAlwIYTwUBLgQgjhoSTAhRDCQ0mACyGEh/r/5u24RBxfqgQAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 把周末和非周末的数据叠加对比\n",
    "df.groupby(['weekend',df.index.hour])['count'].mean().unstack(level = 0).plot()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
